프로그래밍 : 컴퓨터 심리학

우리 모두는 사용자로서, 관리자로서 또는 프로그래머 그 자체로서 프로그래밍과 밀접하게 관련되어 있다고 생각하지만 궁극적으로 시간이 지남에 따라 우리 삶과 더 연결될 것입니다.

이 기사에서 (내가 만들 계획 인 작은 시리즈의 시작), 몇 년 동안 프로그래밍에 대해 발견한 몇 가지 개념을 여러분과 공유하고 싶습니다. 나는 고도로 기술적인 것을 의미하지 않습니다. 나중에 그 이유를 설명하겠습니다. 하지만 내가 의도하는 것은 그들이 내 눈으로 세상을 볼 수 있도록 하는 것입니다. 그리고 그들이 그것이 어떻게 보이는지 좋아한다면 조금 더 깊이 파고들게 하는 것입니다 🙂

자세한 내용을 살펴보기 전에 먼저 가장 간단한 점부터 짚고 넘어가겠습니다.

기술 포스트를하지 않는 이유는 무엇입니까?

글을 읽은 사람들을 위해 최고의 리눅스 명령, 이 접근법의 원인에 대해 조금 알게 될 것입니다. 기술은 항상 변화하고 있으며 오늘 글을 작성하고 게시물이 호평을 받으면 항상 정보를 업데이트해야 합니다. 오늘날 가장 일반적인 언어에서 유일하게 확실한 것은 변화입니다. 이것으로 나는 (프로그래머가 나를 옳다는 것을 증명할 수 있습니다.) 프레임워크는 항상 코어에서 성장하고 변경됩니다. 이는 버그가 발생하기 때문이며 일부는 단순하다고 간주될 수 있습니다. 버그, 다른 사람은 취약점. 이것이 바로 오늘날 특정 언어에 대한 게시물을 작성하는 것이 몇 개월, 최선의 경우 XNUMX년 또는 XNUMX년의 유용성을 보장할 수 있는 이유입니다. 그러나 그것은 아이디어가 아닙니다 🙂

전기가 중요하다

가장 낮은 소프트웨어 프로그래밍 언어에 대해 약간의 연구를 수행 한 사람들은 모든 것이 전기로 거슬러 올라간다는 것을 알 것입니다. 과거에는 프로그래밍이 하드웨어 수준에서 수행되었는데, 이는 오래된 시계, 계산기 및 기타 많은 장치가 다음과 같은 방식으로 프로그래밍하여 운명을 완수 할 수 있음을 의미합니다. 하드웨어.

문제

하드웨어 프로그래밍 변경은 비용이 많이 들고 복잡합니다 🙂 (적어도 그것이 그들이 나에게 말한 것입니다 🙂 ). 이것이 바로 하드웨어로 가능했던 모든 것을 할 수 있도록 몇 가지 명령을 제공하기 위해 실제로 해당 하드웨어 계층을 추상화하는 프로세서가 등장한 이유입니다. 소프트웨어.

프로세서

오늘날의 프로세서에는 다음과 같은 제한된 수의 기능이 있습니다. 인트 루치 온 많은 책에서. 이를 통해 하드웨어가 실행할 수 있는 가장 기본적인 기능을 수행할 수 있으며 장비의 메모리를 통해 정보를 동원할 수 있습니다.

등록

레지스터는 프로세서가 커널에서 작업을 수행할 수 있도록 정보를 저장하는 공간으로, 아키텍처에 따라 크기와 순서가 다를 수 있지만 간단히 말해서 레지스터의 기능은 다음을 나타내는 데이터를 저장하는 것입니다. 프로세서는 다음 작업 유형 중 하나입니다. 데이터 이동, 산술 및 논리, 제어 흐름. 이러한 유형의 기능으로 모든 것을 요약할 수 있습니다.

바이너리

프로세서는 바이너리 수준에서 작동합니다. 즉, 01예 🙂. 여기에 흥미로운 사실이 있습니다 😀GNU / Linux 권한을 기억하십니까? 음,프로세서가 실제로 이러한 권한을 어떻게 인식하는지 궁금한 적이 있습니까?? 간단한 🙂 바이너리. 가장 낮은 수준에서 프로세서는 권한을 0과 1의 시퀀스로 이해하므로 우리가 형성하는 XNUMX진수 값이 다음과 같습니다. 실행을 위해 2 읽기용, 쓰기용 4개. 바이너리를 읽는 방법을 아는 사람들은 다음을 이해할 것입니다.

111100101111

그룹에 대한 읽기, 쓰기 및 실행 권한을 부여합니다. 다른 사람들 그룹을 위해 공연과 독서를하는 동안 그룹 파일 소유자는 읽기 전용입니다. 가장 궁금하신 분들을 위해 마지막 1개의 XNUMX은 다음을 활성화합니다. setguid, setuidsticky bit. 이 바이너리가 무엇인지 모른다면 다른 포스트에서 설명할 수 있고, setuid, setgid, 스티키 비트에 대해 모른다면 숙제로 남겨두겠습니다 😉 그러나 설명할 수도 있습니다. 필요한 경우 다른 곳에.

호기심이 부를 때 ...

글쎄, 당신이 여기에서 나를 팔로우했다면 당신의 호기심은 당신에게 많은 질문을 하기 시작할 것입니다. 내가 대답하고 싶은 첫 번째 질문(그리고 아마도 내가 이미 많이 쓰고 있기 때문에 이 게시물이 내가 할 수 있는 유일한 질문)은 : 호출이 동일하다면 프로그램이 왜 그렇게 다른가요?

심리학

프로그래밍은 마음을 읽는 법을 배우는 기술입니다 🙂 오래 전에 읽은 인용문으로 이 섹션을 시작하고 싶습니다. Edsger Dijkstra는 다음과 같이 말했습니다.

디버깅이 버그를 제거하는 과정이라면 프로그래밍은 버그를 도입하는 과정이어야 합니다.

이 모든 것을 설명하는 더 좋은 방법을 찾을 수 없습니다. 왜 프로그래밍이 오류를 일으키는 기술입니까? 이 시간에 두 명 이상이 궁금해 할 것입니다. 대답은 간단합니다. 왜냐하면 우리의 마음은 인간이고 인간은 실수를하기 때문입니다. 🙂 그것은 우리의 본성에 있으며 지구에 사람이 존재하는 한 지속될 것입니다.

컴퓨터는 틀리지 않습니다

실수를 저지르는 것은 우리이고, 팀은 항상 우리가 그들에게 말한 것을 재현하는 것으로 제한할 것입니다. 그래서 다른 C 책에서 다음과 같은 내용을 읽은 적이 있습니다.

C는 거친 언어이고 그것으로 많은 것을 할 수 있지만, 당신이 원하거나 그렇게 하라고 하면 발에 총을 쏘는 것을 결코 멈추지 않을 것입니다.

이것은 다소 흥미로운 사실입니다 🙂 그렇게 낮은 수준에서 작업할 때 수행되는 많은 작업이 파괴적일 수 있습니다. 이는 오류 방지 계층이 더 오래되었기 때문에 약간 더 높은 수준의 언어에서는 발생하지 않는 일입니다.

모든 것이 심리학입니다

모든 언어, 프레임워크, 프로그래머는 일종의 철학을 존중하고 따르며, 그렇지 않다면 매우 유망한 미래가 없습니다. UNIX 및 파생 제품에서 작업하는 사람들은 아마도 오래된 문구를 알고 있을 것입니다.

한 가지만하고 아주 잘하십시오.

이 철학은 커널과 같은 일부 프로젝트, 한 가지 일만 수행하는 상당히 작은 기능이지만 최선을 다해 수행하는 프로젝트에서 따르는 것입니다.

우리가 다른 언어로 가면 각각은 기능과 목적을 갖게 될 것입니다. 일부는 더 허용적이고 다른 일부는 더 제한적이지만 모두 자신의 사고 방식을 따릅니다.

마음을 읽는 법 배우기

프로그래머들 사이에는 동일한 문제를 해결하는 데 수백 가지 방법이 있다는 말이 있습니다. 이것은 사실이지만이 측면에 대해 훨씬 더 깊은 것이 있습니다. 소스 코드를 읽으면 마음을 읽을 수 있습니다. 마음을 읽을 수 있습니다. 마음을 읽을 수 있습니다. 그 생각을 작성한 프로그래머 (또는 프로그래머)의 마음을 읽을 수 있습니다. 일종의 가상의 심오한 일기입니다 🙂 개발자의 마음을 깊이 알 수 있으며 대규모 프로젝트의 경우 시간이 지남에 따라 논리적이고 비판적인 사고가 어떻게 성장했는지 볼 수 있습니다. 막내의 마음을 크게 키우는 특별한 무언가가 그들을 발견해야했던 사람들의 최고의 길을 알 수 있기 때문입니다 🙂

일관성있게

많은 프로그래머와 전문가들은 우리가 안전 지대, 사실이지만 특정 프로세스 및 형식을 유지하는 데 필요한 것 이상입니다. 이것은 설명하기 간단합니다. 우리의 마음은 반복적이고 구조를 존중합니다. 매일 같은 방식으로 코드를 작성하면 짧은 시간에 양식에 대한 생각을 멈추고 집중할 수 있습니다. 배경. 이것은 당신이 볼 수 있습니다 논리 대신 프로그램의 언어 구문. 이것이 제가 배우는 것을 고려하는 이유입니다. 개념들 항상 배우는 것보다 더 중요합니다 양식. 개인적인 의견이지만 이 글을 다 읽으신 후에 제가 왜 그렇게 생각하는지 이해하실 수 있기를 바랍니다 🙂 또한 C, Java, Javascript, Python, Ruby, PHP 등으로 프로그래밍을 해본 사람이 알려줍니다 🙂 개념을 알면 코드를 쉽게 작성할 수 있습니다.

요약하면

글쎄요, 이것은 제가 프로그래밍 기술에 대해 다르게 생각하는 데 도움이되기를 바라는 시리즈의 첫 번째 단계입니다. 심지어 당신이 아마 수백 번 작성한 코드를 실행할 수있게 해주는 개념을 탐구하도록 초대하기도합니다. 그러나 그들은 그것이 실제로 무엇을하는지 생각하기 위해 멈추지 않았습니다. 프로그래밍을 시작하지 않았지만 알고 싶은 것이 정말 중요한 것에 대해 우선 순위를 정할 수 있기를 원하는 사람들을 위해 🙂 인사말


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   하비에르 G. 델가도

    프로그래밍이 더 깊이 프로그래밍되는 새로운 언어로 논의되는 매우 성실한 기사 (이 경우)에서 저의 지원은 다음과 같습니다.

    1.    크리스ADR

      안녕 하비에르, 정말 고마워요 🙂 저는 그들이 항상 저에게 코드, 유명한 Ctrl + C ... Ctrl + V만을 가르치고 싶었 기 때문에 이것이 매우 중요하다고 생각합니다. 그러나 저는 이것이 세상에서 가장 단순한 문제 일지라도 이것에 끌려간 적이 없습니다. 다른 사람에게서 베끼기보다는 글을 쓰고 싶어요. 제 창조물 인 것 같은 느낌이 듭니다.
      안부

  2.   발 루아

    이미 다음 챕터를 기다리며 오래 전에 프로그래밍을 중단했고, 이후 챕터에서 내 결정에 대한 몇 가지 원인을 찾을 수 있다고 생각합니다.이 챕터에서 모자를 벗었습니다.

  3.   크리스ADR

    안녕하세요 Balua 🙂
    글쎄, 나는 다음 것을 위해 뭔가를 생각 해낼 것이다. 모든 게시물에서 스레드를 따를 수있는 방식으로 모든 것을 주문하는 것은 약간 복잡하지만 조만간이 항목 (및 저에게 요청한 여러 다른 항목)을 시도 할 것입니다. 귀하의 의견에 감사드립니다. 건배

  4.   그렇지 않으면

    기사의 보석!, 다음 희망 ...