프로그래밍에서 함수(메서드)에 인자를 넘길 때 어떻게 전달되는지에 따라Call by Value와 Call by Reference로 나뉜다. 이 차이는 언어마다 다르게 적용돼서 헷갈리기 쉽다.1. Call by Value (값에 의한 호출)값을 복사해서 전달함수 내부에서 매개변수를 변경해도 원본은 변하지 않는다.예시 (C, Java 기본형)#include void change(int x) { x = 20;}int main() { int a = 10; change(a); printf("%d", a); // 10} 👉 값만 복사됐으니 a는 그대로 10이다.2. Call by Reference (참조에 의한 호출)주소(참조)를 그대로 전달함수 내부에서 변경하면 원본도 함께 바뀐다.예시 ..
CS
개발하면서 가장 많이 헷갈리는 개념 중 하나가 바로 동기(Synchronous) vs 비동기(Asynchronous)블로킹(Blocking) vs 논블로킹(Non-Blocking) 입니다. 겉보기에는 비슷해 보이지만, 판단 기준이 완전히 다릅니다.이 글에서는 부장님이 알려주신 핵심 기준인 동기/비동기 -> 끝나는 시점블로킹/논블로킹 -> 제어권을 중심으로 개념을 잡고, 이와 연결된 CS 개념까지 정리하려합니다.핵심 개념동기(Synchronous) vs 비동기(Asynchronous)판단 기준 : 작업 완료 시점동기 : 호출한 작업이 끝나야 다음 작업 시작 -> "네가 끝날 때까지 기다릴게"비동기 : 호출한 작업이 끝나길 기다리지 않고, 다른 일을 하다가 나중에 결과를 받음 -> "난 할 일 하고 있을게..
JIT 컴파일러를 공부하다보니, AOT 컴파일러 또한 공부를 해보려 합니다. AOT 컴파일러란?AOT(Ahead-Of-Time) 컴파일러는 프로그램 실행 전에,소스 코드나 중간 코드(바이트코드)를 미리 기계어로 컴파일하는 방식입니다.즉, 실행 전에 컴파일을 모두 완료하므로, 실행 시점에서는 번역 없이 바로 실행 가능한 상태가 됩니다.AOT 컴파일러의 동작 과정소스 코드 작성:개발자가 작성한 고급 언어 코드(C, C++, Java 등)를 작성합니다.AOT 컴파일:소스 코드를 특정 플랫폼의 기계어로 변환하여 실행 가능한 바이너리 파일을 생성합니다.예: .exe, .elf, .bin 같은 파일.실행:컴파일된 바이너리 파일은 직접 운영체제와 하드웨어에서 실행됩니다.AOT 컴파일러의 장단점장점:빠른 실행 속도:이..