찾다
시스템 튜토리얼리눅스NASA와 같은 프로그래밍 코드를 작성하는 데 도움이 되는 최고의 프로그래머가 되기 위한 10가지 가이드!

소개 인용문: NASA의 최고 프로그래머들이 미션 크리티컬 코드를 어떻게 작성하는지 아시나요? 코드를 더욱 명확하고 안전하며 이해하기 쉽게 만들기 위해 NASA의 제트 추진 연구소에서는 10가지 코딩 규칙을 개발했습니다.

十条准则帮助你像 NASA 顶级程序员一样编程!

NASA의 개발자 작업은 프로그래밍 세계에서 가장 어려운 작업 중 하나입니다. 이들의 주요 초점은 코드를 작성하고 안전한 미션 크리티컬 애플리케이션을 개발하는 것입니다. 이러한 이유로 엄격한 코딩 규칙을 준수하는 것이 중요합니다. 이러한 규칙은 코딩 스타일, 언어 기능 사용 등을 포함하여 소프트웨어 개발의 다양한 측면을 다룹니다. 적절한 코딩 표준에 동의하기는 어렵지만 NASA의 JPL(제트 추진 연구소)은 Powers of Ten: Rules for Development Secure Critical Code라는 코딩 규칙 세트를 따릅니다.

JPL이 오랫동안 C를 사용했기 때문에 이 규칙은 주로 C로 작성된 프로그램을 위한 것입니다. 그러나 이러한 규칙은 다른 프로그래밍 언어에도 쉽게 적용될 수 있습니다. 이러한 코딩 규칙은 주로 보안을 보장하기 위해 JPL의 수석 과학자인 Gerard J. Holzmann이 개발했습니다.

NASA의 미션 크리티컬 코드 작성을 위한 10가지 규칙:

  1. 모든 코드를 매우 간단한 제어 흐름 구조로 제한하세요. goto 문, setjmp 또는 longjmp 구조, 간접 또는 직접 재귀 호출이 없습니다.
  2. 모든 루프에는 고정된 상한이 있어야 합니다. 루프가 미리 설정된 반복 상한에 도달할 수 없는지 탐지 도구를 통해 정적으로 확인해야 합니다. 이 상한을 정적으로 증명할 수 없는 경우 이 원칙을 위반한 것으로 간주될 수 있습니다.
  3. 초기화 후에는 동적 메모리 할당을 사용하지 마세요.
  4. 한 줄에 하나의 명령문, 한 줄에 하나의 선언이라는 표준 형식을 참조한다면 함수의 길이는 종이 한 장보다 길어서는 안 됩니다. 일반적으로 이는 함수당 60줄 이하의 코드를 의미합니다.
  5. 코드의 어설션 밀도는 평균적으로 함수당 2개의 어설션입니다. 어설션은 실제 실행에서 발생할 가능성이 없는 상황을 감지하는 데 사용됩니다. 어설션에는 부작용이 없어야 하며 부울 테스트로 정의되어야 합니다. 어설션이 실패하면 어설션에 실패한 함수 호출자에게 오류 조건을 반환하는 등 명시적인 복구 작업이 수행되어야 합니다. 정적 도구의 경우, 절대 실패하지 않거나 실행되지 않는다는 것을 정적 도구로 입증할 수 있는 모든 주장은 이 규칙을 위반합니다(예를 들어, 쓸모 없는 주장(true) 문을 추가하여 이 규칙을 충족하는 것은 불가능합니다).
  6. 데이터 개체는 가능한 가장 작은 범위에서 선언되어야 합니다.
  7. void가 아닌 함수의 반환 값은 각 함수 호출마다 확인되어야 하며, 해당 매개변수의 유효성은 각 함수 내에서 확인되어야 합니다.
  8. 전처리기의 사용은 헤더 파일과 간단한 매크로 정의를 포함하는 것으로 제한됩니다. 기호 접합, 가변 인수 목록(타원) 및 재귀 매크로 호출은 허용되지 않습니다. 모든 매크로는 완전한 구문 단위로 확장 가능해야 합니다. 조건부 컴파일 지시문의 사용은 종종 모호하지만 항상 피할 수 있는 것은 아닙니다. 이는 대규모 소프트웨어 개발에서도 헤더 파일을 여러 번 포함하지 않는 표준 관행을 넘어서 하나 또는 두 개 이상의 조건부 컴파일 지시문에 대한 타당한 이유가 있어야 함을 의미합니다. 코드에서 이 작업을 수행할 때마다 도구 기반 검사기에 의해 플래그가 지정되어야 하며 그럴 만한 이유가 있습니다.
  9. 포인터 사용은 제한되어야 합니다. 특히 포인터 역참조 수준은 1개 이하이어야 합니다. 포인터 역참조 작업은 매크로 정의나 유형 선언에 암시적으로 포함될 수 없습니다. 또한 함수 포인터는 허용되지 않습니다.
  10. 개발 첫날부터 컴파일러가 가장 높은 수준의 경고 옵션을 켜서 코드를 컴파일해야 합니다. 이 설정에서 코드는 경고 없이 컴파일되어야 합니다. 코드는 하루에 한 번 이상 소스 코드 정적 분석 도구를 사용하여 검사해야 하며 경고 없이 통과해야 합니다.

이러한 규칙과 관련하여 NASA는 다음과 같이 말합니다.

이 규칙은 자동차의 안전벨트와 같습니다. 처음에는 조금 불편할 수도 있지만, 시간이 지나면 습관이 되어 사용하지 않을 수 없게 됩니다.


작가 소개:

Adarsh ​​​​Verma는 Fossbytes의 공동 창립자입니다. 그는 항상 오픈 소스, 기술적 혁신 및 완전성에 세심한 관심을 기울인 존경받는 기업가입니다. 이메일을 통해 그에게 연락할 수 있습니다 — [email protected]


위 내용은 NASA와 같은 프로그래밍 코드를 작성하는 데 도움이 되는 최고의 프로그래머가 되기 위한 10가지 가이드!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 Linux就该这么学에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
인터넷은 Linux에서 실행됩니까?인터넷은 Linux에서 실행됩니까?Apr 14, 2025 am 12:03 AM

인터넷은 단일 운영 체제에 의존하지 않지만 Linux는 이에 중요한 역할을합니다. Linux는 서버 및 네트워크 장치에서 널리 사용되며 안정성, 보안 및 확장 성으로 인기가 있습니다.

Linux 운영이란 무엇입니까?Linux 운영이란 무엇입니까?Apr 13, 2025 am 12:20 AM

Linux 운영 체제의 핵심은 명령 줄 인터페이스이며 명령 줄을 통해 다양한 작업을 수행 할 수 있습니다. 1. 파일 및 디렉토리 작업 LS, CD, MKDIR, RM 및 기타 명령을 사용하여 파일 및 디렉토리를 관리합니다. 2. 사용자 및 권한 관리는 UserAdd, Passwd, CHMOD 및 기타 명령을 통해 시스템 보안 및 리소스 할당을 보장합니다. 3. 프로세스 관리는 PS, Kill 및 기타 명령을 사용하여 시스템 프로세스를 모니터링하고 제어합니다. 4. 네트워크 운영에는 Ping, Ifconfig, SSH 및 기타 명령이 포함되어 있으며 네트워크 연결을 구성하고 관리합니다. 5. 시스템 모니터링 및 유지 관리 Top, DF, Du와 같은 명령을 사용하여 시스템의 작동 상태 및 리소스 사용을 이해합니다.

Linux 별칭을 사용하여 사용자 정의 명령 바로 가기로 생산성을 높이십시오Linux 별칭을 사용하여 사용자 정의 명령 바로 가기로 생산성을 높이십시오Apr 12, 2025 am 11:43 AM

소개 Linux는 유연성과 효율성으로 인해 개발자, 시스템 관리자 및 전원 사용자가 선호하는 강력한 운영 체제입니다. 그러나 길고 복잡한 명령을 자주 사용하는 것은 지루하고 응급실이 될 수 있습니다.

Linux는 실제로 좋은 것은 무엇입니까?Linux는 실제로 좋은 것은 무엇입니까?Apr 12, 2025 am 12:20 AM

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Apr 11, 2025 am 09:11 AM

소개 : Linux 기반의 윤리적 해킹으로 디지털 프론티어 보안 점점 더 상호 연결된 세상에서 사이버 보안이 가장 중요합니다. 윤리적 해킹 및 침투 테스트는 취약점을 적극적으로 식별하고 완화하는 데 필수적입니다.

Linux 기본 사항을 배우는 방법?Linux 기본 사항을 배우는 방법?Apr 10, 2025 am 09:32 AM

기본 Linux 학습 방법은 다음과 같습니다. 1. 파일 시스템 및 명령 줄 인터페이스 이해, 2. LS, CD, MKDIR, 3. 파일 생성 및 편집과 같은 파일 작업 배우기, 4. 파이프 라인 및 GREP 명령과 같은 고급 사용법, 5. 연습 및 탐색을 통해 지속적으로 기술을 향상시킵니다.

Linux를 가장 많이 사용하는 것은 무엇입니까?Linux를 가장 많이 사용하는 것은 무엇입니까?Apr 09, 2025 am 12:02 AM

Linux는 서버, 임베디드 시스템 및 데스크탑 환경에서 널리 사용됩니다. 1) 서버 필드에서 Linux는 안정성 및 보안으로 인해 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하기에 이상적인 선택이되었습니다. 2) 임베디드 시스템에서 Linux는 높은 사용자 정의 및 효율성으로 인기가 있습니다. 3) 데스크탑 환경에서 Linux는 다양한 사용자의 요구를 충족시키기 위해 다양한 데스크탑 환경을 제공합니다.

리눅스의 단점은 무엇입니까?리눅스의 단점은 무엇입니까?Apr 08, 2025 am 12:01 AM

Linux의 단점에는 사용자 경험, 소프트웨어 호환성, 하드웨어 지원 및 학습 곡선이 포함됩니다. 1. 사용자 경험은 Windows 또는 MacOS만큼 친절하지 않으며 명령 줄 인터페이스에 의존합니다. 2. 소프트웨어 호환성은 다른 시스템만큼 좋지 않으며 많은 상용 소프트웨어의 기본 버전이 부족합니다. 3. 하드웨어 지원은 Windows만큼 포괄적이지 않으며 드라이버를 수동으로 컴파일 할 수 있습니다. 4. 학습 곡선은 가파르고 명령 줄 운영을 마스터하는 데 시간과 인내가 필요합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.