종이에 문제 해결 방법을 쓰십니까? [닫은]


55

저는 신입생 컴퓨터 과학 학생이며 방금 파이썬으로 실제 프로젝트를 시작했습니다. 교수님이 수업에서 제안한 펜과 종이 방법을 사용할 때 매우 효율적이라는 것을 알았습니다. 그러나 문제를 적어서 종이에 알고리즘을 사용할 수 없을 때 나는 정말 느립니다. 실험실에서는 항상 과제를 기숙사로 다시 가져 가야합니다. 내가 거기에 도착하고 그것을 쓰면 나는 5 분 안에 전체 수업에 걸린 문제를 해결한다.

어쩌면 사람들이 실험실을 해결하기 전에 스트레스를 받기 때문일 수도 있습니다. 아니면 펜과 종이 방법 일 수도 있습니다.

나는 포럼을 탐색하고 누군가가 당신의 프로그램을 종이에 작성해야한다면 프로그래머가되어서는 안된다고 썼습니다. 실제 코드를 입력하기 전에 프로그램이 수행하는 작업을 확인하고 그 과정을 추적 할 때 훨씬 나아지기 때문에 정말 걱정입니다. 내가 뭔가 잘못하고 있습니까?

편집 : 명확하지 않아 죄송하지만 종이에 글을 쓸 때 실제 코드가 아닌 문제 해결 방법 (예 : 예제 작성, 값으로 테이블 만들기 등)을 의미했습니다. 나는 단지 아이디어를 얻기 위해 종이를 사용합니다.


28
나는 종이에있는 문제를 먼저 생각하면서 잘못된 것을 볼 수 없습니다.
Julien Guertault


34
그 사람이 틀렸다 대부분 UML 또는 유사 코드 블록과 같은 속기 를 사용 하지만, 어떤 방법을 사용하든 마음이 작동하는 것처럼 작동 해야하며 분명히 종이가 필요합니다.
Patrick Hughes

10
실제로 실험실에있는 동안 종이를 사용하여 문제를 해결하는 방법을 배우게 될 것입니다. 엔지니어와 과학자들은 습관적으로 종이 노트북을 사용하여 (그리고 종이 트레일로), 많은 IT 사람들이 왜 그 접근 방식을 무시하는지 궁금했습니다. 저는 코드를 작성하고 종이 노트를 항상 사용하는 경력을 가진 엔지니어입니다.
Móż

4
@ ott-- 나와 동료는 모두 공책에 펜을 사용합니다. 적어도 저에게는 대학에서 배운 좋은 속임수입니다. 지울 수 없다는 것이 더 많은 생각을하게하는 데 도움이되므로 추가 페이지에 퍼 뜨리지 않아도됩니다. 또한 한 페이지에 모든 내용을 유지하려는 유혹과 지우는 기능으로 원하는 것을 실수로 쉽게 지울 수 있습니다. 잘못된 접근 방식은 지울 수 없으며 지울 수 있으므로 시도한 것과 작동하지 않는 것에 대한 알림이 있습니다. 종이는 싸고, 자신을 더 힘들게 만들지 마십시오.
이즈 카타

답변:


71

종이에 알고리즘을 먼저 적용하는 데 아무런 문제가 없습니다. 일상적인 코딩에는 그다지 중요하지 않지만,보다 복잡한 알고리즘의 경우 전문 프로그래머는 항상 종이나 화이트 보드에서 처리합니다. 학생에게는 모든 프로그램이 복잡합니다.

그러나 컴퓨터에서 알고리즘을 더 잘 설계하려면 연습 할 수있는 몇 가지 기술이 있습니다. 코드를 작성하는 것부터 시작하지 말고 종이에 주석과 같은 것을 작성하고 실제 코드 나 더 자세한 주석을 하나씩 확장하십시오.

예를 들어, 연결된 목록의 중간에서 요소를 삭제하는 경우 다음과 같이 시작할 수 있습니다.

// find the element
// point the previous element to the next element
//    How do I get a pointer to the previous element?
//        doubly-linked list?
//        another find?
//        keep track during the first find?
// delete the element

그런 다음 // find the element의사 코드가 더 많은 함수로 대체 하고 완전한 솔루션이 나올 때까지 계속 진행할 수 있습니다. 코드를 선형 방식으로 작성해야한다고 생각하지 마십시오.


좋은 조언 Karl.
andy256

2
위의 방법을 Rubber Duck 문제 해결 (광산은 SuSE 봉제)과 결합하여 복잡한 작업을 대부분 수행합니다. 나는 또한 많은 것들을 쓸 수있는 화이트 보드의 사치를 가지고 있습니다.
데코

+1. 질문을하고 답을 쓰면 자주 문제를 해결합니다. 그것은 내 계획에서 함정과 장애물을 찾도록 강요한다.
앤디 헌트

1
여러 소프트웨어 개발 기반 비즈니스가 모든 곳에서 쓰기 가능한 표면을 갖게 될 것입니다. 그들은 일반적으로 다이어그램, 의사 코드, 메모, 작품으로 가득합니다. 나는 무언가를 낙서하는 것을 매우 선호합니다. 코드를 리팩토링하는 경우 실제로 코드를 인쇄하고 주석을 달 수 있다면 코드를 좋아합니다. 글을 읽고 메모하는 것보다 훨씬 더 좋은 느낌을받습니다.
Twirrim

1
이 기술의 실제 이름은 다음과 같습니다.
유사

16

해봐! 우리가 생각 하고 솔루션을 설계 하는 것을 부르면 코드를 발파하는 것보다 프로세스가 훨씬 빠릅니다.

사람들은 자신 의 행동 방식이 더 좋다고 생각하고 시끄러운 사람들이 우리에게 말하기 를 좋아합니다. 그러나 모든 사람의 능력과 기술 혼합은 다릅니다. 그래서 당신을 위해 일하는 것을하십시오. 연습을하면서 머리에서 더 많은 디자인 작업을 수행하고 더 큰 문제에 종이를 사용할 것입니다.

주의해야 할 점은 시험에서 어떤 형태를 취하는 지입니다. 그들은 종이 위에 있습니까, 아니면 컴퓨터 기반입니까? 그들이 종이를 기반으로한다면, 당신의 길은 당신에게 유리할 것입니다. 그것들이 컴퓨터 기반이라면, 그것도 괜찮습니다 : 종이에 디자인을 한 다음 코드를 작성하십시오. 가장 잘 작동하는 것!


1
장기적으로 시간이 덜 걸리는 솔루션을 생각하고 설계 한 것에 대해 보증 할 수 있습니다. 너무 자주, 대학에서, 나는 사람들 (나 자신을 포함하여)이 2 시간 동안 충돌을 일으켜 그들의 해결책이 깨 졌음을 알기 만했다. 문제를 설계하고 해결하는 데 시간을 내면 간단한 해결책을 찾는 데 도움이됩니다. 우리는 바로 이런 이유로 작업하는 화이트 보드, 노트북 및 "문의처"를 가지고 있습니다.
Jamie Taylor

6

종이에 제도 코드 (의사 또는 기타)가 본질적으로 잘못되었다고 생각하지 않습니다. 화이트 보드에 작성하는 것과 실제로 다르지 않습니다. 많은 사람들이 문제를 해결하는 방법을 논의 할 때 그렇게합니다.

비 CS 수업에 대한 수필 초안을 종이에 먼저 쓰고 나서 타이핑합니까? 사실, 나는 몇 년 전에도 여전히 대학생 이었지만 신입생이 지난 후에는 초안 작성이 훨씬 쉬워지고 동일한 아이디어가 적용되기 때문에 모든 초안을 화면에 쓰도록 강요했습니다. 코드 작성

Word와 같은 텍스트 편집기에 있더라도 알고리즘을 입력하는 것이 좋습니다. 더 많이할수록 종이와 펜에 의존하지 않는 편이 더 편합니다. 그리고 타이핑 기술이 다소 부족하여 실제로 좌절의 근원이라면 타이핑 코스를 수강하십시오! 미래의 경력을 위해 최선을 다할 것입니다.


6

나는 실제 코드 를 종이에 넣지 않지만 사소한 것이 없으면 거의 항상 화이트 보드 또는 노트북에서 시작합니다. 나는 보통 스케치합니다.

  • 알고리즘 / 프로세스 / 제어 흐름
  • 데이터 구조
  • 관계
  • 구성 요소 (이 문제를 어떻게 분해합니까)

일반적으로 스케치, 의사 코드 및 영어의 조합입니다.

이렇게하면 코딩을 시작할 때 시각화하기가 더 쉽다는 것을 알았습니다. 또한 코드를 시작 하기 전에 결함이 발견 되어 끊임없는 스크롤과 창 호핑 대신 내 앞에있는 모든 것을 볼 수 있습니다. 뿐만 아니라, 일단 작성된 후에는 다른 작업을 수행 할 때 내 마음 뒤에 물건이 형성되도록 할 수 있습니다. 또한 비선형 방식으로 작업하여 아이디어가 나에게 닿을 때 종이에 아이디어를 전달한 다음 필요한 지점에 도달하면 아이디어를 다시 찾을 수 있습니다.

종이에 무언가를 투입하는 것은 기억력 유지에 큰 도움이됩니다. Field Notes 브랜드 노트북 의 태그 라인 은 다음과 같습니다.

나는 그것을 기억하기 위해 그것을 쓰지 않고 나중에 그것을 기억하기 위해 그것을 쓰고 있습니다.

종이에 물건을 적는 것에 더 집중된 접근법을 취한 후, 잠시 후에 휴대 전화에서 ToDo 앱에 항목을 작성하더라도 전자 메모를 작성하는 것보다 생각이 머리에 훨씬 더 잘 들어 맞는 것을 발견했습니다. IOW, 종이 / 화이트 보드에 코딩을 계획하면 아이디어가 더 좋아집니다.

또한 내가 작성한 것을 문서화 할 때 편리한 참조 기능을 제공합니다.


3

문제를 해결하고 솔루션을 구현하는 코드를 작성하는 것은 서로 다른 두 가지 활동입니다.

언어에 익숙하지 않다면 코드 자체에 많은 시간을 할애하지만 좋은 솔루션을 찾는 데 충분하지 않습니다. 종이, 화이트 보드 또는 천장에서 시작하는 것이 그와 관련하여 도움이된다면, 반드시 그렇게하십시오.

(개인적으로, 나는 내 마음에 솔루션을 구축하려고 노력하면서 컴퓨터에서 내리고 서클을 돌아 다니는 것을 발견했다)


2

당신은 에이스 인터뷰를 할 것입니다! 종이나 화이트 보드에 코드를 작성하게합니다. 나는 정반대입니다. 펜으로 괄호를 쓰거나 잘라내어 붙여 넣기를 시도하는 것은 너무 지루합니다!

아빠는 COBOL을 프로그래밍 할 때 많은 종이를 사용했습니다. 나는 그것이 당신의 사고 방식 일 뿐이라고 생각합니다.


0

우리는 The Basics of Programming이라는 두 학기 수업을 가졌습니다. 학기 중반 시험과 시험은 모두 종이로 진행되었습니다. 컴파일 오류가 발생하면 심각한 점수를 잃게됩니다. 거대한 컴파일 오류가 발생하면 실패한 것입니다. 그러나 우리가 코드를 살펴보고 비교적 짧은 시간에 버그가있는 줄을 찾을 수있는 능력을 개발했다고 생각합니다.


0

당신이하는 일에는 아무런 문제가 없으며 종이와 펜을 사용하여 프로그래밍하는 법을 배웠습니다.

다른 사람들이 당신을 위해 일하는 것을 제안했습니다. 필자가 작성한 첫 번째 Java 프로그램이 주로 종이에 관한 것임을 기억 한 다음 200 시간 이상의 컴파일러 오류를보고 울면서 15 분 동안 울면서 15 분 동안 울었습니다. 더 많았지 만 컴파일러는 처음 200 개만 표시했습니다! 내가하고있는 요점은 종이에 코드를 작성함으로써 프로그램이 수행해야 할 작업에 대한 기본 알고리즘과 기능을 생각할 수 있다는 것입니다. 컴파일러는 내 프로그램이 실행되지 않는 이유를 지적했습니다. 문제의 90 %가 배열에서 예외를 벗어났습니다.

더 많은 경험과 자신감을 얻으면 펜과 용지를 적게 사용하게됩니다. for 루프 등과 같은 기본 개념을 사용하는 방법을 이미 알고있을 것입니다. 다른 프로그램에는 재사용 할 수있는 예가 있습니다. 프로그램 작성 중 명백한 버그를 찾기 위해 컴파일러와 IDE를 사용합니다. 지금은 그런 경험이 없습니다.

귀하의 질문을 읽으면서 귀하의 문제 중 일부가 집중 해야하는지 궁금합니다. 조용한 환경에서 펜과 종이를 사용하면 집중하는 데 도움이됩니다.

당신은 여전히 ​​대학에 있고 여전히 배우고 있습니다. 궁극적으로, 당신이하는 일은 당신을 위해 일하는 것입니다. 종이와 펜을 사용하여 생각과 명쾌하고 차분한 생각을 주문하고 있다면 프로그래밍하는 것입니다.


1
이것은 질문에 어떻게 대답합니까?
gnat

OP는 '누군가가 프로그램을 종이에 적어야한다면 프로그래머가되어서는 안된다'고 썼기 때문에 펜과 종이를 사용할 수 있는지 묻고있다. 그는 또한 그가 대학에 있으며 여전히 배우고 있다고 말합니다. 저의 의도는 그가하는 일에 아무런 문제가 없음을 보여 주려고했으며 종이와 펜으로 프로그래밍하는 법을 배웠습니다.
Daniel Hollinrake

-1

메모장에서 메모와 접근 방식을 낙서하고 책을 확인하고 웹을 확인하고 생각할 때 코드가 훨씬 잘 구성됩니다. 나는 또한 시각적 인 사람에 가깝기 때문에 데이터 구조로 그림을 그리는 것이 매우 유용합니다. 모든 줄을 쓰지는 않지만 "중요한"조각이나 핵심 기능을 생각하는 것을 낙서합니다. 더 큰 프로젝트의 경우 Visio를 시작합니다. 그들이 더 효율적이거나 시간 단위로 지불하지 않는 한 누군가가 키보드로 바로 점프하는 것을 옹호하는 이유를 모르겠습니다.


-1

당신을 위해 일하는 것을하십시오. 종이에 코드를 쓰지 않을 것입니다. 나는 의사 코드를 작성하고 종이에 순서도를 그리지 만 전체 코드를 작성하는 것은 시간 낭비처럼 보입니다.


-2

나는 또한 기술을 배우는 첫날에 같은 문제에 직면하고 있습니다.

그러나 종이에 코드를 작성하는 경우 버그 수정 기회가없고 종이 작업 중 오류 및 예외를 해결할 수있는 기회가 있기 때문에 이러한 유형의 연습은 100 % 성공을 제공하지 않아야합니다.

따라서 종이 작업으로 문제를 해결할 수있는 탐색 기능이 없으며 시스템 실습으로 인해 유형 속도를 보너스로 얻을 수 있습니다.

나는 서류 작업도하고 있지만 기능을 구현하기 전에 대략적인 추정을 수행하면 시스템에서 구현을 시작할 것입니다.

시스템 실습에 더 많은 시간을 보내십시오. 이것은 100 % 자신감과 결과를 줄 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.