[Must Have] Tucker의 Go 언어 프로그래밍
OP 코드
[Youtube] What Is Instruction Format ? | Addressing Mode, OPCODE , OPERAND Explained
구성 요소 | 설명 | 예시 |
Mode | 명령어가 수행될 때 사용되는 주소 지정 모드 | 레지스터, 직접 주소 |
Opcode | 수행할 연산의 종류를 지정하는 부호 | ADD, SUB, MOV 등 |
Operand | 명령어에서 사용되는 피연산자의 위치나 값 | 레지스터 번호, 주소 등 |
어셈블리어
어셈블러는 번역하는 과정에서 필요한 모든 정보를 데이터베이스에 저장하고 필요 시 불러 사용합니다.
어셈블리어로 작성된 소스 프로그램을 기계어(0과 1로 구성된 언어)로 번역(변형)하고 로더(실행 가능한 파일로 만드는 프로그램)에 필요한 정보를 생성하는 역할을 합니다.
고수준 언어
고수준 언어는 사람이 이해하기 쉽도록 설계된 프로그래밍 언어
특징 | 설명 | 예시 |
가독성 | 사람이 이해하기 쉽고 자연어에 가까운 문법을 사용하여 코드를 작성할 수 있도록 합니다. | Python, Java, C#, JavaScript |
추상화 | 하드웨어와의 상호작용을 추상화하여 프로그래머가 하드웨어의 세부 사항에 대해 신경 쓰지 않고 프로그래밍할 수 있습니다. | Python, Java, C# |
이식성 | 특정 플랫폼에 종속되지 않고 여러 플랫폼에서 동작할 수 있도록 합니다. | Java, Python, C |
생산성 향상 | 더 높은 수준의 추상화로 인해 개발 시간을 단축하고 프로그래밍의 생산성을 향상시킵니다. | Python, Ruby, JavaScript |
정적 컴파일 언어 vs 동적 컴파일 언어
정적 컴파일 언어
- 미리 기계어로 변환 → 실행
장점
- 빠르게 실행 (실행시 변환과정 X)
- 타입 에러를 컴파일 시점에서 발견 가능
단점
- CPU 아키텍처, OS에 맞춰 빌드를 해야됨.
- 호환성이 안좋음
동적 컴파일 언어
- runtime 때 → 기계어로 변환
- 정적 컴파일언어의 호환성 단점 → 해결하기 위해
Go - 정적 컴파일 언어
- 내부 환경 변수 → 변경 → 다양한 플랫폼에 맞춰 빌드 가능
약 타입 vs 강 타입
weakly vs strongly
Go → 강 타입 → 자동 타입 변환 지원 X → 최강 타입
까다롭지만, 타입으로 인한 문제 발생이 없음
GC
- Go → GC 제공 → 사용자가 일일이 메모리 관리하지 않아도 된다.
- Go의 GC는 매우 발전된 형태 → GC로 인한 성능손실이 크지 않다.