동생
프로그래밍은 복잡한 문제를 단순화하여 모든 동작을 1+ 1=2 로 간단하게 하면 컴퓨터가 할 것이다. 이것은 프로그래밍에 대한 나의 이해입니다. 선배가 이곳을 듣고 깨달으면 더 이상 이 주제에 대해 이야기하지 않을 것이다.

우리 컴퓨터의 특징을 분석해 봅시다. 정확히 말하자면, 현재 우리 사회의 컴퓨팅 기술은 아직 원시적이다. 컴퓨터라고 말하면 맞습니다. 계산만 할 수 있습니다. 컴퓨터라고 해도 너무 들어, 사고력이 있을 수 없다. (알버트 아인슈타인, 컴퓨터명언)

폰 노이만 아키텍처에서 컴퓨팅 장치는 교과서에서 배운 것과 다를 수 있는 외부 세계와 상호 작용하고 고속으로 동작을 반복할 수 있는 능력을 갖춘 컴퓨팅 장치입니다. 하지만 저는 그렇게 이해합니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), Northern Exposure (미국 TV 드라마), 과학명언

그래서 처음부터 나는 컴퓨터를 파트너로 생각하지 않았다. 나를 대신해 생각이나 사고를 할 수 있는 파트너는 단지 도구로 삼을 뿐이다. (알버트 아인슈타인, 컴퓨터명언) 이 도구의 용도는 무엇입니까? 가장 중요한 것은 두 가지 기능이 있다는 것입니다.

1, 무한 반복, 하나의 동작 시퀀스, 일단 프로그램이 준비되면 컴퓨터는 지치지 않고 이 시퀀스를 수없이 반복할 수 있다. 이것은 특히 무미건조하고 반복되는 일에 적합하다. 예를 들어 우리 학교에서는 매일 수업할 때 종을 치고 종을 쳐야 한다. 만약 누군가가 한다면, 이 사람은 매우 지루할 것이고, 오래 하면 실수를 할 수 있다. 하지만 컴퓨터가 하면 생각이 없고 피곤하지 않고 잘 할 것이다. 컴퓨터는 반복적인 일에 특히 적합하다.

2. 서비스 품질의 안정성. 컴퓨터는 반복적인 일에 적합하고, 또 한 가지 점은 매번 결과가 같다는 것이다. 이것은 산업화 시대의 가장 중요한 사상 중 하나인 대규모 생산 사고를 반영한다. 보시다시피 오늘날의 사회에서는 복제할 수 없는 예술이 좋지만, 대중이 필요로 하는 것은 양산 제품이다. 품질과 생산량이 안정되어 대중의 요구를 충족시킬 수 있기 때문이다. 롤스로이스는 예쁘지만 대부분 대중 도요타 등 로우엔드 차를 몰았다. 사실은 이렇다. 종을 치는 예입니다. 만약 사람이라면, 그는 병이 나거나, 휴가를 내거나, 아예 잊어버릴 수도 있지만, 컴퓨터는 그렇지 않다. 전기가 정상적으로 작동하는 한 벨을 울리면 실수가 없다.

이런 식으로, 나는 컴퓨터가 실제로 출력 서비스의 질을 끊임없이 반복할 수 있는 기계라는 것을 점점 깨달았다.

좋아, 우리가 먼저 컴퓨터 프로그래밍이 사실 인간의 일이라는 것을 이해할 수 있을까? 우리가 서비스 수요를 만족시킬 때, 우리는 한 번 하고, 잘하고, 만족스러운 결과를 얻을 것이다. 그리고 우리는 이 동작을 반복할 수 있다고 생각한다. 다음에 우리가 비슷한 문제가 생기면 이렇게 하자. 그래서 우리는 컴퓨터를 안배해서 한다. 맞죠?

이것은 프로그램이 실제로 한 가지 일을 어떻게 하는지, 어떻게 하는지, 이 과정의 의미는 실제로 사람이 정의한 다음, 프로그래밍으로 컴퓨터에 가르쳐 주는 것을 의미하는 것인가? (존 F. 케네디, 컴퓨터명언) (알버트 아인슈타인, 컴퓨터명언)

나는 예전에 컴퓨터 프로그래밍에 두 가지 의미가 있다는 느낌이 들었다. 하나는 프로그램 자체의 의미, 즉 일을 하는 방법이다. 다른 하나는 절차 하에서 함축된 논리적 의미, 즉 일의 의미이다. 프로그램은 문자 그대로의 의미밖에 없고, 논리는 절차 단락이 조합되어 표현된 한 층의 의미이다. (알버트 아인슈타인, 절차명언) 지금 생각해 보면, 사실 이 이치이다.

글쎄, 우리가 프로그래밍을 알고 있기 때문에, 한 가지 일을 하는 단계를 분할 하는 것입니다, 그것을 할 컴퓨터를 가르치고, 하지만 어떤 세분성으로 분할 합니까? 이것은 매우 중요합니다. 분할의 세분성이 너무 작으면 프로그래머의 시간과 정력을 낭비할 수 있는데, 이것들은 모두 비용이다. 그리고 분해가 너무 굵어서 컴퓨터는 여전히 이해할 수 없고, 잘못하면 버그다.

이것은 프로그래밍에서 매우 중요한 개념, 즉 세분성, 즉 문제에 대한 우리의 묘사의 세밀함을 보여준다.

첫 번째 컴퓨터가 가장 멍청하다. 컴퓨터 구성 원리를 배운 학생들은 누산기만 있으면 실제로는 컴퓨터로 계산할 수 있고 덧셈만 할 수 있다는 것을 알고 있을 것이다. 수학적으로 우리는 어떤 계산도 결국 덧셈으로 진화할 수 있다는 것을 알 수 있기 때문이다. 사실 지금의 CPU 는 밑바닥의 핵심에 있는 것이 이 추가 논리이다. (윌리엄 셰익스피어, 윈스턴, CPU, CPU, CPU, CPU, CPU, CPU)

물론 이것은 아무런 문제가 없지만, 작은 문제가 있는데, 입자가 너무 가늘다는 것이다. 모든 것이 프로그래머에 의해 매우 상세한 덧셈 계산으로 분해된다면, 이 일은 거의 사람의 일이 아니다. 해결책이 없습니까?

허허, 우리가 전에 말했듯이, 컴퓨터의 특징은 무엇입니까? 무한 반복, 우리는 곱셈 연산인 7*24 와 같은 것을 발견할 수 있지만, 우리는 결국 그것을 덧셈 연산으로 분해할 것이다. 하지만 우리가 매번 해체해야 한다는 뜻은 아닙니다. 곱셈 계산도 일과 법칙이다. 그래서 우리가 한 번 분해한 후에, 당연히 분해 과정 자체를 프로그램으로 컴파일해서 다음에 비슷한 문제가 발생할 때 컴퓨터가 이 프로그램을 다시 실행하도록 할 수 있다. 허허, 인텔의 CPU 에 있는 곱셈 지시가 어떻게 이뤄졌다고 생각하세요? AMD 의 CPU 내부에 있는 마이크로코드 시스템이 어떻게 실현되었다고 생각하십니까?

바로 이런 사유가 모든 문제를 해결했다. 우리가 수요를 충족시킬 때, 먼저 분할한 다음, 이전에 분할했는지 여부를 계속 검색해야 한다. 적용 가능한 프로그램 세그먼트를 만났을 때 매번 그렇게 세밀하게 분할하지 않고 직접 사용할 수 있어 작업량을 줄일 수 있습니다. 물론, 새로운 문제가 생기면 스스로 해체해야 한다. 그러나 해체 후 해체 자체를 프로그램으로 쓰고 다음에 다시 사용하는 것이 좋다.

사람들이 다양한 언어를 할 때, 그들은 보통 기초 라이브러리를 제공한다. 이 기본 라이브러리는 실제로 이전 디스어셈블의 결과입니다. 소프트웨어 회사는 그것이 대표적이라고 생각하여 대부분의 앱을 만족시킬 수 있기 때문에 그것을 기본 라이브러리로 컴파일하면 프로그래머는 나중에 직접 사용할 수 있고, 스스로 반복하지 않아도 된다. 그렇게 생각하세요?

이제 stdio.h, stdlib.h 와 같은 C 의 기본 라이브러리를 어떻게 보는지 아시죠? C++ 에서 iostream 이 무슨 뜻인지 아세요? MFC 는 알고 있나요? 자바 런타임 라이브러리도 무슨 뜻인가요?

그러나, 이 세상은 영원히 대량의 수요가 있고, 컴퓨터의 능력도 끊임없이 높아지고 있다. 예전에는 컴퓨터에 맞지 않았던 것이 지금은 점점 잘 어울린다. 그래서 모든 사람은 항상 새로운 문제에 부딪히고 스스로 해체해야 한다. 기본 라이브러리는 제공되지 않습니다. 이것이 프로그래머라는 직업의 존재의 진정한 의미다. 사용자가 새로운 요구 사항을 분해하고 새로운 문제를 해결할 수 있도록 도와줍니다. 물론, 라이브러리 자체도 개선되고 있으며, 해체가 성공한 것으로 입증된 문제를 라이브러리에 패치하여 향후 프로그래머들이 중복 노동을 하지 않도록 하고 있다. 이렇게 간단합니다.

허허, 이렇게 잔소리를 많이 했는데, 아마 많은 학우들이 혼란스러울 거야. 형 님, 무슨 말을 하 시겠습니까?

내가 말하고 싶은 것은 사실 매우 간단하다. 프로그래밍은 디스어셈블의 문제이지만 디스어셈블의 기교와 방법에 주의해야 한다. 다른 사람이 전에 한 짓은 하지 말고 되도록 써라. 그렇지 않다면 한 번만 하고 다음 사용을 유지하려고 합니다. 이렇게 간단합니다.

그렇다면, 이것은 이 글의 제목인' 수련프로그래밍 내공' 과 무슨 관계가 있습니까?

물론 관계가 있습니다. 프로그래밍의 내공은 무엇입니까? 나의 이해는 세상을 추상적으로 이해하고 묘사하는 능력이다. 작업은 다음에 반복할 수 있는 루틴을 빠르게 추출할 수 있으며, 특정 규칙, 즉 컴퓨터 언어 사양으로 설명할 수 있습니다. 이 두 가지 능력으로 어떤 문제가 발생하더라도 프로그램을 쓸 수 있다는 것을 보장할 수 있다.

그래서 학교에서 수학, 언어, 알고리즘, 데이터 구조, 심지어 컴파일 원리, 운영 체제를 많이 배웠습니다. 사실 이것들은 모두 도구이지, 프로그램을 쓰는 목적이 아니다.

프로그램을 쓰는 것은 수요가 있을 때 빠르게 추상화하고, 공통점을 이해하고, 또렷한 언어로 묘사할 수 있다는 뜻이다. (존 F. 케네디, 언어명언) 위의 과목은 너의 추상능력을 향상시키는 데 도움이 되거나, 너의 묘사능력을 향상시키는 데 도움이 된다. 당신은 이것이 사실이라고 생각합니까?

그래서 내가 제자를 데리고 갈 때, 때로는 한 마디 하는 것을 좋아한다. 사실 프로그래머로서 중국어를 조금 배우면 된다. 사실 묘사능력을 가장 잘 키우는 것은 중국어이기 때문이다. 영어는 계산되지 않습니다. 영어도 언어지만 중국의 교육은 일반적으로 이해할 수 있다. 학생의 영어 묘사능력은 한 영어 작가의 관점에서 배양되는 경우는 드물다. 우리 국어 수업만이 언어를 가르칠 뿐만 아니라 수많은 문장과 작문을 통해 문제를 설명하는 조직능력을 가르친다. 이 기능은 프로그램을 작성할 때 매우 유용합니다.

이때 화제가 나왔다. 중국의 언어는 갑골문, 문어문, 백화문이 먼저 있는데, 우리는 그렇지 않다는 것을 발견했다. 전반적으로 갈수록 간단해지는 것이 발전 추세다. 왜요 사람들은 중국어가 사람들이 이해할 수 있는 것이라고 생각하기 때문에, 너무 심오한 것은 보급에 적합하지 않고 생명력이 없다. 반대로, 단순한 것이 많을수록 보급이 빨라진다.

따라서 프로그램을 작성할 때 디스어셈블은 문제를 단순화하기 위한 것이지, 설명 문제가 애매하다는 것이 아니라 기술이라는 점에 유의해야 한다. 진정한 프로그래머는 단순화 문제의 대가이다.

물론, 이 주제에서 우리는 결론을 내릴 수 있습니까? 실제로 프로그래밍 자체의 방법, 프로그래밍 자체의 내부 작업은 C, C++, Java, PHP, Python 과 같은 언어 특색이 없습니다. 。 。 그들은 모두 같은 방식으로 일을 합니까?

그래서 저는 프로그래밍 연습의 내공이 언어와는 상관없이 추상적인 능력과 묘사능력을 배우는 것이라고 제안합니다. 다른 말로 하자면, 어떤 언어에서든, 너는 내공을 극한까지 연습할 수 있는데, 관건은 네가 열심히 하느냐에 달려 있다.

그래서 내가 공부하는 동안, 나의 건의는 너무 고상하지 말고, 언어의 좋고 나쁨을 평가하지 말고, 플랫폼의 좋고 나쁨을 평가하지 말고, 큰 의미가 없고, 너도 자신이 평생 어느 플랫폼과 언어로 발전할 수 있을지 확신이 서지 않는다. 수중에 있는 책과 선생님이 가르친 과목을 집어 들고 공부에 몰두하고 착실하게 공부하다. 나와서 언어를 바꾸는 것이 음식을 먹는 것보다 더 어려워요. ᄏᄏ 이것은 J. J. 질문에 대한 공식적인 대답입니다.

작은 과일 문제에 대해 다시 이야기합시다. 그는 아주 편파적인 제목을 열거했는데, 바로 A 와 B 의 두 가지 변수가 있는데, if 와? :, switch 또는 기타 판단문, 두 숫자 중 더 큰 것을 구하십시오.

나는 이 문제가 좋지 않다고 생각하여 이의를 제기했다. 주된 이유는 위의 토론을 바탕으로 프로그래머를 평가하는 기준이 문제를 단순화하고 설명하는 능력이지, 문제를 복잡하게 만드는 능력이 아니라고 생각하기 때문이다. (윌리엄 셰익스피어, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머)

이것은 학원에 많이 있다. 여기서 화내지 마세요. 저는 모두가 현재 대학이 기본적으로 컴퓨터 전공이고 학술파라는 것을 알고 있지만, 쇼 선생님의 관점은 여러분과 다릅니다.

학교에서 선생님의 임무는 가능한 한 많은 것을 가르치는 것이다. 왜냐하면 그는 네가 앞으로 무엇을 할 것인지, 어떤 지식이 쓸모가 없는지 모르기 때문이다. 그래서 학교 선생님은 복잡한 문제에 대한 모든 사람들의 묘사능력을 키우기 위해 최선을 다할 것이며, 이로 인해 학교 시험은 가능한 한 문제를 복잡하게 하고 더 많은 프로젝트를 조사하는 것이다. 학교 분위기도 복잡한 문제를 해결하는 것이 고수라고 생각하는데, 문제 자체가 복잡하지 않더라도. 모든 사람은 자신의 능력을 평가하는 것을 복잡하게 만든다.

그러나 실제 업무에서는 그렇지 않다. 실제 업무에서 가장 중요하게 여기는 것은 가장 간단한 방법으로 문제를 해결할 수 있는 능력이다. 이는 비용이 가장 낮고 무형중에 사람들이 가장 많이 버는 돈이기 때문이다. 따라서 문제의 추상적인 해체와 명확한 묘사는 매우 중요하다.

많은 학우들이 막 출근하자마자 매우 적응하지 못할 것이다. 사실 이런 관념의 변화이다. 대학에서는 복잡함이 아름다움이고, 상업회사에서는 단순함이 아름다움이다. 이것은 큰 사상 변화, 심지어 세계관의 변화일 것이다. 매우 어렵다. 일반적으로 빠르게 돌고 있는 학우들이 회사에서 진보가 더 빠르지만, 나도 수십 년 동안 돌아서지 않은 프로그래머를 본 적이 있다. 보통 회사에 사는 것은 모두 좀 피곤하다.

제가 오늘 한 말을 생각하고, 문제를 보고, 본질을 파악하는 것이 좋습니다. 상업회사의 발전 사고를 제때에 이해하고 간결한 요소를 이해한다면, 나는 네가 반드시 일자리를 찾을 수 있을 것이라고 말할 수는 없지만, 네가 찾기만 하면 기본적으로 곧 회사에 녹아들게 될 것이다. (윌리엄 셰익스피어, 윈스턴, 일명언)