나는 주로 MASM, NASM 및 TASM과 같은 내가 주로 사용했던 어셈블러를 기본으로하고 있습니다. TASM의 최신 버전 중 일부에는 OO를 지원하는 일부 기능이 있었지만 그 기능을 많이 사용하지 않았으며 이에 대해 언급하려고하지 않습니다.
첫째, 대부분의 언어는 적어도 다소 나무와 비슷한 구조로 이동했습니다. 객체 지향이든 객체 기반이든 정확히 무엇이든 시스템의 여러 부분 간의 관계에 대해 약간의 정의가 있습니다. 또한 시스템의 한 부분을 우발적 인 "혼잡"으로부터 "보호"할 수있는 부분도 많이 있습니다 (원하는 경우 보호를 우회 할 수 있음에도 불구하고). 대조적으로, 어셈블리 언어는 상대적으로 "편평하다"-시스템의 다른 부분에서 코드 (와 데이터) 사이의 관계는 주로 문서화와 이름 지정 규칙에 의해 설정된다.
결과적으로 이상적인 것보다 훨씬 더 밀접하게 코드를 결합하는 것이 훨씬 쉽습니다. 승인 된 인터페이스를 우회하여 어셈블리 언어 선택 (고성능, 작은 크기 등)을 선택하도록 요구 한 요구 사항이 종종 보상을 제공하므로 더 작고 빠른 코드를 얻을 수 있습니다 (일반적으로 많지는 않지만) 모든 차원에서 더 좋습니다). 언어와 도구 자체는 사용자가하는 일 (좋은지 나쁜지)을 제한하는 데 훨씬 덜 도움이되므로 문제를 방지하기 위해 관리자에게 훨씬 큰 부담이됩니다. 질적으로는 다르지만 양적으로는 그렇지 않습니다. 즉, 경영진은 어떤 방식 으로든 문제를 방지하기 위해 노력해야하지만, 어셈블리 언어의 경우 일반적으로 무엇이 더 있는지에 대한 더 많은 (그리고 더 엄격한) 지침이 필요합니다. 허용되지 않습니다.
이를 완화하는 것은 주로보다 신중한 지침,보다 숙련 된 직원의 더 많은 지침,보다 구체적이고 신중하게 시행되는 명명 규칙의 문제입니다.
직원 채용은 문제의 일부입니다. 그러나 내가 당면한 문제는 주로 내가 기대하지 않은 문제입니다. 어셈블리 언어 코드로 뛰어 들어 기쁘고 "전투기 선수"성격을 가진 사람을 찾는 것은 매우 쉽습니다. 어셈블리 언어 사용에 대한 사전 경험이 거의 없었음에도 불구하고 대부분은 합리적인 작업을 수행했습니다.
내가 겪은 어려움은 더 많은 고위급 인력을 찾는 것이 었습니다. 프로젝트를 최소한 통제와 비슷하게 유지할 수 있었고 코드를 합리적으로 유지하는 데 필요한 지침을 제공하는 (그리고 대부분 시행하는) 언어에 완전히 익숙하지 않은 사람들 유지 및 이해가 가능합니다.
되돌아 보면, 그 점에서 가장 큰 문제 중 하나가 발생했을 수도 있습니다. 내 부분에서 두 가지 문제의 원인을 볼 수 있습니다. 먼저, 내가 생각하는 프로젝트가 진행될 때까지, 나는 주로 주로 고급 언어 로 코딩 하고 어셈블리 언어 만 사용했습니다.최후의 수단으로. 따라서 내가 그것을 사용할 때 성능을 얻는 거의 모든 트릭은 공정한 게임 일뿐 만 아니라 예상이었습니다. 둘째, 어셈블리 언어로 완전히 (또는 주로) 작성된 일부 시스템에서 작업했을 때 다소 철분 한 프로젝트 관리자가있었습니다. 당시 나는 비교적 젊었을 때, 그들이 일을하는 방식을 솔직히 반박했기 때문에 그 반대의 경향이있었습니다. 돌이켜 보면, 그들이하고있는 일은 정말로 중요했고, 그들이 늙고 융통성이 없어서 만하지 않았습니다.