과거 If 문 배열, 루프… 이제 무엇?


9

나는이 벽을 계속 쳤을 때 1 년 전에 프로그래밍을 포기했다. 기본 Android 애플리케이션을 만들고 싶어서 주제를 다시 방문하고 있습니다. 그러나 나는 제한된 지식만으로는 충분하지 않다고 생각합니다.

여기 내 문제가 있습니다.

몇 권의 책을 읽었으며 C # / Java에 대한 비디오 자습서를보고 예제를 따른 다음 책을 완성했습니다. 결국 그들은 항상 다음에 무엇을해야할지에 대해 어리석은 것처럼 보입니다.

이것이 의미하는 바는 기본 "hello world"응용 프로그램에서 if 및 배열까지 모든 것을 가르쳐주고 코딩 세계로 나가서 무언가를 만드는 방법을 알 것으로 기대합니다.

여기에 뭔가 빠졌습니까? 나는 이것이 모든 프로그램의 빌딩 블록이라는 것을 알고 있지만 읽은 책은 다음에 무엇을 해야할지 실제로 보여주지 않습니다.

내가 생각하기 쉬운 대답은 '코딩을 시작'하는 것이지만 어디에서? 예를 들어 "Head First Java"를 읽습니다. 그들이 배운 모든 것을 가지고 개 경주 게임을 만들라고 말한 것은 ...

"부정하지 말고 제공된 소스 코드를 보지 마십시오. 지금까지이 작업을 수행 할 수 있어야합니다."

반 시간 전에 그들은 배열을 수행하는 방법을 설명하고 있었고, 이론이 없으면 작동하는 게임을 만들려고합니까?

내가 묻는 이유는 이것이 코딩을 시작하기 위해 알아야 할 전부라고 두려워하기 때문입니다. 그러나 작은 도구 상자가 주어졌으며 마천루를 만들라고 들었습니다.

조언을 주셔서 감사합니다


"개 경주 게임"은 많은 것을 의미 할 수 있습니다. 우선, 그래픽도 포함되어 있습니까? 당신이 만들고있는 것이 그래픽을 포함하지 않는 한 초보자에게 완벽하다고 생각합니다. 아마도 교수형 집행 인은 단지 이미지에 대한 생각을 피하기 위해 대신 ...
jhocking

그것은 그 작은 도구 상자와 마천루를 구축하는 것은 매우 가능 - 큰 프로그램이 단지의 컬렉션 구성되어 LOT 작은 비트를. 하지만 지금은 할 수 없습니다 . 새집을 짓고 길을 따라야합니다. jhocking이 말했듯이 아직 그래픽으로 아무것도하지 마십시오. 처음 물건이 항상 형식이 지정되지 않은 텍스트를 기반으로하는 좋은 이유가 있습니다.
Loren Pechtel

답변:


10

이것이 의미하는 바는 기본 "hello world"앱에서 if 및 배열까지 모든 것을 가르쳐주고 코딩 세계로 나가서 무언가를 만드는 방법을 알 것으로 예상됩니다.

여기에 뭔가 빠졌습니까? 나는 이것이 모든 프로그램의 빌딩 블록이라는 것을 알고 있지만 읽은 책은 다음에 무엇을 해야할지 실제로 보여주지 않습니다.

사실은 아닙니다. 그렇지 않습니다. 모든 프로그램의 빌딩 블록은 추상화와 재사용입니다. 많은 프로그래밍 언어 에는 배열이나 ifs 또는 루프 조차 없습니다 .

특정 프로그래밍 언어의 작동 방식과 반대로 프로그래밍하는 방법을 가르치는 훌륭한 책이 있습니다.이 책은 읽은 책처럼 보입니다.

HtDP (일명 HtDP)는 프로그램을 디자인하는 방법 입니다. 프로그램을 디자인하는 방법을 알려줍니다. 또한 문제를 분석하고 해결하며 알고리즘으로 변환하고 작업 프로그램으로 변환하는 방법에 대한 레시피를 제공합니다.

"레시피"는 기본적으로 "프로그램"의 또 다른 단어이므로,이 책은 컴퓨터에서 실행할 프로그램을 생성하기 위해 인간이 머리에서 실행하는 프로그램을 가르쳐줍니다. 얼마나 멋진가요? :-)

저자는 현재 HtDP의 두 번째 판 초안을 작성 중이며 , 첫 번째 판 대신 읽을 수도 있습니다. 명령형 프로그래밍에 대한 자료는 제거되었으며 아직 작성되지 않은 두 번째 책인 How to Design Components 에서 다룰 예정 이지만 초판에서 누락 된 장을 읽을 수 있습니다.

HtDP는 프로그래밍 지식이 없으며 고등학생을 대상으로합니다. 그러나 그만 두지 마십시오. 단지 초기 장을 더 빨리 마칠 수 있다는 것을 의미하지만 지루할 것이라고 생각하지 않습니다.

콘크리트 추상화 도 비슷한 맥락에서 잘 읽습니다. HtDP와 마찬가지로 프로그래밍 지식이 없다고 가정합니다.

언급 한 또 다른 책 은 컴퓨터 프로그램의 구조 및 해석 ( 일명 SICP)입니다. 이 책은 지금까지 쓰여진 최고의 프로그래밍 책 중 하나이며 프로그래밍 지식을 전혀 가지고 있지 않습니다.

그것은 된다 , 그러나, 완전 초보자를 대상으로 MIT에있는 연구 . 그것은 어떤 프로그래밍 지식을 가정하지 않는 동안 그래서, 그것은 않습니다 꽤 가정 도메인 전기 공학, 물리학, 수학의 분야에서 예를 들어 지식을. 참고 : 이들은 가르치는 개념 과 아무 관련이 없으며 연습예제 를 이해하기 만하면 됩니다. 따라서 HtDP 또는 Concrete Abstractions를 먼저 읽은 다음 SICP를 읽는 것이 좋습니다.


1
나는 들어 본 적이 프로그래밍 없이 언어 if문 또는 어떤 종류의 loop: 그것은되지 않을 것이다 완전한 튜링 그들없이.
Reinstate Monica-M. Schröder

@Martin Schröder : loop문장이 없는 프로그래밍 언어 가 있으며 튜링이 완료되었습니다.
Giorgio

@Giorgio : 예를 들어? AFAIK 당신은 어떤 종류의 루프 / 고토 가 필요합니다 .
Reinstate Monica-M. Schröder

2
@ MartinSchröder : Lambda Calculus는 Turing-complete (실제로이 용어가 발명 된 언어 임)이며 함수 추상화 및 함수 적용 만 있습니다. 그것은 재귀조차하지 않으며, 고정 점 조합기를 사용하여 그것을 인코딩해야합니다! 단점 : SQL (2003 년 이전)과 같이 Turing-complete가 아니거나 C (Turing-completeness에는 무한한 저장 공간이 필요하지만 C는 모든 주소를 처리 할 수 ​​있음을 보장합니다. 유한 한 변수에 저장하십시오).
Jörg W Mittag

2
@ MartinSchröder : 또는 또 다른 방법 : 프로그램을 컴파일 하는 것만으로 컴파일러가 어려운 문제를 해결하도록하는 프로그래밍 언어가 있습니다. C #에서는 3-SAT 문제를 과부하 해결 문제로 인코딩하고 컴파일러로 해결할 수 있으며 Haskell에서는 실제로 Halting Problem과 동등한 문제를 형식 시스템으로 인코딩하여 컴파일러에서 해결할 수 있습니다. "프로그래밍 언어"를 명령형 언어 로 생각하는 것 같지만 복잡한 계산을 표현할 수있는 많은 비 제한적 언어가 있습니다.
Eric Lippert

5

글쎄, 당신은 독특한 상황에 있지 않습니다. 프로그래밍 언어로 된 초보자 도서의 대부분은 언어의 기본 구성 요소에 더 초점을 맞추는 경향이 있으며 이는 좋은 것입니다. 그러나 당신과 함께, 결국 우리는 언어가 제공 해야하는 모든 단일 구성을 배웠지 만 실제 문제를 해결하기 위해 적용 할 수없는 상황에 처해 있습니다. 간단히 말해, 텍스트 예제와 실제 프로그램 사이의 격차는 Telastyn이 말한 것처럼 코드로 재생하려고 할 때만 다리를 can 수 있습니다.

  1. 이 책에서 배우면서 책의 일부 코드 예제 / 기술을 적용 할 수있는 실제 시나리오를 찾아보십시오.
  2. 더 크고 복잡한 것을 만들기 위해 책에 제공된 예제 프로그램을 혼합하십시오. 그런 다음 코드를 최소화하고 동일한 결과를 제공하는 다른 코드를 작성하십시오.
  3. 고려중인 언어에 대한 실제 프로젝트를위한 Google.
  4. 기본 언어 요소를 익힌 후에는 선택한 프레임 워크를 사용해보십시오. 처음으로 더 쉬운 학습 곡선을 가진 것을 선택했습니다.
  5. 기존 프로젝트를 찾아보고 디자인을 연구하십시오.
  6. 응용 프로그램 패턴, OO 디자인 및 구현 등과 같은 고급 응용 프로그램 디자인을 가르치는 고급 책을 찾으십시오.

결국 프로그래밍 기술을 향상시키고 궁극적으로 많은 고층 빌딩의 건축가가되는 데 도움이되는 실습과 연구에 관한 모든 것입니다.


2

C #에 대해서는 이것을 참조하십시오. 매우 완전합니다. http://www.programmersheaven.com/ebooks/csharp_ebook.pdf 반년 전에 나는 그것을 직접 사용했습니다. 예제로 #Develop 컴파일러를 사용합니다. Java를 거의 사용하지 않았기 때문에 Java를 많이 도울 수 없습니다.

프로그래밍해야 할 때 많은 사람들이 깨닫지 못하는 것은 일반적으로 디자인하는 데 추가 SDK 또는 프레임 워크를 사용한다는 것입니다. 따라서 좋은 중개자 프레임 워크가 필요할 가능성이 높기 때문에 Java 또는 C #에서 전화 프로그래밍으로 즉시 넘어갈 것으로 예상하지 마십시오. 이러한 학습 곡선은 프로그래밍 언어 자체의 학습 곡선만큼이나 성 가실 수 있습니다. 필자가 게시 한 C # 자습서는 C # 만 다루지 만 여기에서 다루는 많은 개념은 Java와 같은 다른 객체 지향 언어로 볼 수 있습니다.

편집 : 불행히도 설명하는 시나리오는 많은 자습서가 따르는 경로입니다. 이러한 자습서를 따를 필요가 없으며 학습 방식에 맞지 않으면 다른 방법을 시도해 보는 것이 가장 좋습니다 (아는 모르지만 Google은 아마도 그럴 것입니다). 그러나 확실하게 설명하려는 책의 저자가 코드를 한 줄씩 설명했는지 확인하십시오. 당신이 얼마나 똑똑한 지 걱정하지 마십시오. 오직 신동만이 책에서 실제 게임으로 바로 갈 수 있습니다. 튜토리얼은 결코 능력의 표준 측정이 아니라는 점을 명심하십시오.


훌륭한 답변이며, 수행하려는 프로젝트를 결정해야한다고 덧붙이고 싶습니다. 프로젝트가 제시하는 문제를 해결하는 Google 방법. 직면 한 문제를 해결하는 더 좋은 방법을 찾아 많은 것을 배우게됩니다.
mortalapeman

1

그렇습니다. 슈퍼 기본 프로그램을 만들려면 충분해야합니다. 이 시점에서 당신은 책이하는 것보다 약간 더 복잡한 프로그램을 만들려고 노력합니다. 특정한 일을해야하는데 어떤 일이 어떻게되는지 모르는 경우 인터넷을 검색하거나 교사 / 멘토에게 문의하십시오. 이것은 고급 기능으로 이어질 것입니다.

어떤 책도 문제 해결 방법을 가르쳐주지 않습니다.

프로그램을 디자인하는 방법을 설명하는 책은 없습니다. 실습과 함께 제공됩니다. 사소한 응용 프로그램을 만드는 방법을 가르치는 책은 없습니다. 뉘앙스가 너무 많습니다. 구현 구현 하는 방법을 배우지 않을 것입니다.

이 시점에서 배우는 가장 좋은 방법은 손대는 것입니다. 무언가를 만들기 위해 코드를 가지고 놀기. 예술가들이 종종 좀 더 정교하고보기 좋게 보이는 약간의 경쾌한 시작을 시작하는 것처럼, 프로그래머들도 그러한 진보적 진보가 필요합니다.


1
의 저자 - "어떤 책은 프로그램을 설계하는 방법을 설명 할 것 없다" 디자인 프로그램을 어떻게 동의 할 수 :-)
요 르그 W MITTAG

1
@ JörgWMittag : 일반적인 프로그램에 대한 몇 가지 일반적인 기술과 데모가 있지만 사소한 것이 아닌 경우에는 2013 년 현재도 여전히 기계화 할 수없는 많은 인간의 판단이 필요합니다.
whatsisname

1

프로그래밍에 들어가기 위해 책을 사용했는지 기억이 나지 않지만, 당시에는 책이 아닌 구문 참조 매뉴얼이었던 것 같습니다. 프로그래밍 언어로 무엇을 할 수 있었는지, 실제 응용 프로그램을 빌드하는 방법은 가르쳐주지 않았습니다.

운좋게도이 책에는 몇 가지 예제가 있는데 (예, 다운로드 가능한 소스 코드 예제는 없습니다) 그런 다음 어떻게 작동하는지 알아 내려고했습니다. 프로그래밍을 배우는 가장 좋은 방법은 아니지만 당시에는 재미있었습니다.

"권장 하는 원을 그리는 Javascript 응용 프로그램을 만들고 싶습니다"와 같은 목표를 설정 하고 이미 얻은 지식을 사용하여 언어 SDK / 문서 및 / 또는 여기에서 다른 모든 것을 시작하고 조회하는 것이 좋습니다. 그래서.

이것이 새로운 언어로 뛰어 들어 첫 단계를 배우려고 할 때 사용하는 접근법입니다. 최근에 읽은 대부분의 책들은 중요한 것을 놓친 것과 같은 느낌을 받았기 때문에 만족하지 못했습니다 . 그러나 운 좋게도 우리는 지금 인터넷을 가지고 있으므로, 배우고 싶은 언어가 무엇이든 인터넷에서 예제 소스 코드를 찾아서 학습을 계속할 수 있습니다.

편집 물론이 방법을 가르치는 좀 더 일반적인 책은 응용 프로그램 또는 어떤 프로세스 (스크럼, XP, V-MODELL) 후속으로는 순수한 언어 지식에 좋은 추가이다를 설계한다.


1

나는이 단계에서 특정 언어에 대해 너무 많은 세부 사항을 배우기보다는 프로그래밍 개념에 대한 일반적인 책을 읽어야한다는 Jörg에 동의합니다. 이 책에서는 프로그램을 설계하는 방법 (How to Design Programs) 서적과 관련 하여이 과정 에서 참고 자료로 사용되며 , 이는 귀하에게 흥미로울 수 있습니다.

그렇지 않으면 다른 사람들이 언급하지 않은 다른 도구는 다른 개발자들과 많이 이야기하는 것입니다 . 저는 프로그램 학습을위한 가장 효과적인 방법 중 하나는 동료 나 다른 프로그래머들과 특정 시점에서 내가 직면하고있는 프로그래밍, 프로그래밍 언어, 기술 또는 구체적인 문제의 측면에 대해 많은 시간을 소비하는 것이 었습니다. 지식의 구두 전달은 여전히 ​​새로운 기술을 배우는 가장 효과적인 수단 중 하나 일 수 있습니다.


+1. 나는 한 번의 대화로 가지 않고 회의에 참석하는 사람들을 알고 있습니다. 그들은 단지 복도에 놀러 가서 다른 관점을 얻기 위해 총 낯선 사람과 문제를 논의하기 위해 거기에갑니다.
Jörg W Mittag

0

오픈 소스 프로젝트를 찾아 개인 샌드 박스로 바꾸는 것이 좋습니다. 기존 동작을 수정하고 새 동작을 추가하고 일부를 삭제하십시오. 놀면서 자신의 아이디어를 구현하고 "내가 이것을 시도하면 어떻게 될까".

나는 당신이 다른 사람의 오픈 소스 프로젝트를 변환하여 자신의 주장을 옹호하지 않습니다.

다음 단계로 나아가는 방법을 스스로 가르치는 수단으로 다른 작업 프로젝트를 살펴보고 있습니다. 오픈 소스 코드로 다운로드 할 수있는 사이트가 많이 있습니다. 다음은 염두에 두어야 할 부분입니다. CodePlex CodeProject


-5

이것이 코더의 삶입니다. 기술은 모르지만 'hello world'를 개발하면 전문가가됩니다. 회사 (실제)에서는 그것이 작동하는 방식입니다. 행운을 빕니다


2
그것은 매우 유용한 답변이 아닙니다.
svick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.