▲GN⁺ 2025-02-17 | parent | ★ favorite | on: NASA의 소프트웨어 개발 10가지 규칙(cs.otago.ac.nz)Hacker News 의견 원문을 읽어보면 각 항목의 목적을 설명하고 있음 원문은 주로 C 언어를 대상으로 하며, C로 작성된 중요한 응용 프로그램의 신뢰성을 더 철저히 검사할 수 있도록 최적화하려고 함 원저자는 자신이 무엇을 하는지 명확히 이해하고 있으며, C 코드를 검증하는 여러 방법을 설명함 원문에 있는 논리는 모두 완벽하게 이해됨 아마도 작은 시스템에서 C를 배웠기 때문일 것임 임플란트 의료 기기를 위한 하드웨어용 C를 배웠으며, 실험실에서도 유사한 지침을 따랐음 마지막 단락은 훌륭함 규칙이 처음에는 엄격하게 느껴질 수 있지만, 코드의 정확성에 생명이 달려 있을 수 있는 경우를 고려해야 함 자동차의 안전벨트처럼 처음에는 불편할 수 있지만, 시간이 지나면 자연스럽게 사용하게 됨 이 규칙에 대한 나의 비판은 OP와는 매우 다를 것임 setjmp/longjmp를 옹호하는 글을 처음부터 진지하게 받아들이기 어려웠음 이 패턴은 접근해본 사람이라면 누구나 명백히 문제가 있음 글은 setjmp/longjmp가 예외 처리라고 주장함 예외 처리는 좋다고 주장함 두 번째 전제에 심각한 문제가 있음 루프에 대해 최대 반복 횟수를 설정하라는 의미임 10^90은 어리석고 관련이 없음 이 지점 이후로 글을 읽지 않았음 규칙을 비판한다면 다음과 같은 점에 초점을 맞출 것임 함수 본문의 길이는 이해의 단순성과 상관관계가 없으며, 오히려 규칙이 암시하는 것과 반대일 수 있음 2개의 단언은 완전히 임의적이며, 단언할 수 있는 모든 것을 단언해야 함 Ada, Pascal (Delphi), JavaScript, 또는 함수형 언어를 사용하는 사람들은 가능한 한 지역적으로 타입과 함수를 선언해야 함 JavaScript에서의 개인적인 접근 방식은 명시적으로 값을 캡처하려는 경우를 제외하고 중첩된 방식으로 함수를 정의하지 않는 것임 오래된 정신 모델 때문일 수 있음 성능 프로파일링에서 함수가 호출될 때마다 재정의된다고 보여졌음 현대 JavaScript 인터프리터가 이렇게 작동한다고는 생각하지 않음 화살표 함수 도입 이후로 깊은 최적화가 이루어졌을 것임 오래된 습관은 쉽게 사라지지 않음 지역 변수를 캡처하지 않는 명명된 함수는 파일/모듈 범위에 유지함 다른 많은 노트는 흥미롭고 매우 세세한 부분임 "기술적으로 정확한 것이 가장 좋은 정확성"이라는 방식으로 오래된 엔지니어들이 좋아함 NASA 규칙이 전달하려는 신중함의 일반적인 톤이 매우 좋다고 생각하며 대부분을 지지함 문맥상, 이것들은 "규칙"이라기보다는 제안된 관행임 공식적인 "규칙"은 "NPR" 같은 이름의 문서에 있음 개발자는 이 "규칙"을 준수하거나 무시할 의무가 없음 GCC는 컴파일 후 스택 사용량과 호출자-피호출자 관계를 얻을 수 있음 setjmp()와 longjmp()는 예외를 처리하는 나쁜 방법임 청소 코드가 실행되지 않음 규칙의 정신을 따르면 청소가 필요한 자원이 없어야 함 주요 문제는 각 응용 프로그램에서 다르게 나타남 반복 제한이 초과되거나 시작 시 할당된 고정 자원이 충분하지 않을 때 어떻게 할 것인가 요즘 프로그래머들은 코드를 화면에서 읽기 때문에 종이 크기가 더 이상 관련이 없는 이유가 명확하지 않음 표준 페이지와 문자 크기에 대한 반복이 있었음 종이의 한계뿐만 아니라 인간의 한계 때문임 재귀에 대한 규칙은 필요한 스택 공간의 정적으로 알려진 경계를 보장하기 위한 것임 컴파일러에 의존한다는 비판은 맞지만, 런타임의 상한을 도출하기 위한 전제 조건임 안전이 중요한 시스템에서는 보장된 응답 시간이 필요함 제목은 규칙에 대한 _비판_임을 나타내야 함 엄격한 타입 사용을 권장함 모든 스칼라 타입에 대해 엄격한 타입 사용 제국 단위와 미터법 단위를 혼합하지 않음 ▲roxie 2025-02-21 [-] 제목은 규칙에 대한 _비판_임을 나타내야 함 222 답변달기
Hacker News 의견