먼저 개념을 말씀드리자면, 제가 만든 용어인 네이키드 프로그래밍(naked programming)입니다. 이 용어는 맨 금속 위에서 프로그램을 작성하는 것을 의미합니다.마이크로컨트롤러이 분야는 하드웨어가 있는 마이크로컨트롤러 제어 시스템을 의미하니 너무 신경 쓰지 마세요.
맨 금속 프로그래밍은 황무지를 되찾는 것과 같고, 어떤 괭이라도 딱딱한 돌에 부딪힐 수 있습니다. 개척자들은 다가오는 해에 오아시스를 추구합니다. 그리고 이른바 '베어 메탈'을 회수하는 엔지니어들은 무엇을 추구하고 있는가? 물론, 우리는 임무를 찾고 있습니다.
우리는 대체로 고위 지식인이라고 주장하는데, 개척 과정에서 무엇을 생각해야 할까요? 물론, 중요한 것은 과제를 어떻게 완수하느냐가 아니라, 무엇보다도 우리가 무엇을 생각하는지에 대해 생각하는 것입니다. 그 부분을 돌아다녔나요? 그 생각을 돌아서는 것이 옳고, 이 원은 그 생각을 중심으로 형성됩니다. 생각은 복잡한 환경에서 모든 것을 수행하는 단순한 사람의 지휘관이며, 이는 개척자의 삶의 모든 세부 사항, 물론 네이키드 프로그래밍 자체에도 영향을 미칩니다.
누군가가 괭이를 들고 또 한 번 들고 땀이 발밑에 떨어질 때, 그들이 무슨 생각을 하는지 알 수 있을까? 물론 말하기 어렵지만, 직접 가보면 알 수 있을 거예요. 하지만 아마도 같은 거야, 몇 가지만 있을 뿐이야: 왜 이 태양은 이렇게 독이 되는 거지? 왜 이렇게 돌이 많아? 여기서 심기에 가장 좋은 곳은 어디일까요? 며칠 동안 진행되나요? 이건 너무 느려서 기계가 있으면 얼마나 좋을까. 물론, 이것은 전부에 불과하며, 누구나 많은 아이디어를 낼 수 있습니다.
그렇다면 우리가 맨 금속 개척을 할 때 무엇을 생각해야 할까요? 아마도 우리의 일반적인 생각은 이렇습니다: 먼저 간단한 함수를 하고, 중요한 함수를 먼저 처리한 뒤, 오늘 이 함수를 디버깅한 뒤 내일 다음 함수를 하면, 왜 제가 상상했던 결과와 다르겠습니까? 정말 설명이 안 돼! 잠깐만 기다리세요.
만약 당신이 어떤 작업을 받고, 테스트 플랫폼을 구축한 뒤 프로그램을 만들고, 한 함수씩 생각한 뒤 성공의 기쁨에 취한다면, 이 프로그램을 하는 것은 사실상 생각이 없는 상태라고 부릅니다. 신중한 프로그래밍은 소스 코드를 한꺼번에 쌓아서는 안 됩니다. 왜냐하면 그러면 중복 여부와 모순이 있든 없든 상관없이 무딘 숫자들이 조심스럽게 빽빽하게 쌓일 뿐이기 때문입니다. 그래서 소스 코드를 작성하기 전에 어떻게 작성할지 생각해야 합니다. 많은 사람들이 글을 쓰기 전에 작업을 모듈화하고 프로그램을 조직하는 등 비슷한 문제를 생각해본 적이 있을 것입니다. 하지만 이러한 생각은 작업 문제일 뿐, 네이키드 프로그래밍의 개념은 아니며, 네이키드 프로그래밍은 작업 모듈 조직 과정과 빈 프로그램 작성 시 소스 코드 조직의 지침 이념에 영향을 미쳐야 하며, 이는 소스 코드의 품질을 직접 결정합니다.
데이터 구조, 모듈 형성, 마이크로컨트롤러 명령어, 하드 명령어 작동 메커니즘, 마우스 라인 구동 모드, 인터럽트 시퀀스, 점프 지연, 코드 위치, 논리적 조직, 모듈(런타임 상태) 및 디스(비런타임 상태) 관계 등이 모두 네이키드 프로그램 아이디어의 구성 요소입니다.
이것은 사소해 보일 수 있지만, 베어 프로그램은 본질적으로 호스트 프로그램과 다르고 강력하고 완전한 운영체제 지원을 제공합니다. 마이크로컨트롤러에 운영체제를 심는 것은 불가능하므로 취향이 바뀌겠지만, 누군가가 갑자기 '누구누구 마이크로컨트롤러에 운영체제가 있다'고 말하게 두지 마세요. 네이키드 프로그램의 품질은 애플리케이션에서 느껴지지 않을 수 있지만, 당신이 할 수 있고 기능을 달성할 수도 있지만, 좋은 네이키드 프로그램은 확장성, 유지보수 가능성, 그리고 높은 안정성과 성능을 갖추고 있습니다.
이 고급 기술 영역을 추구하는 과정에서 우리는 올바른 아이디어를 제시해야 합니다. 좀 혼란스러워 보이니? 일반적으로, 훌륭한 영혼을 소스 코드에 심어주고 소스 코드에 훌륭한 아이디어를 부여하는 것입니다.
|