본문 바로가기

전체 글39

Debugging, Testing and Analysis Assertion static_assert : complie time assert : runtime 에러체크를 컴파일타임과 런타임에 하여 얻게 되는 차이는? 컴파일 타임에 에러를 발견하는 것에 대한 장점이 있는지? Static Assertions 사전적의미// Assert - 주장, 단언하다 struct에서 padding의 역할 연산 횟수를 줄여준다? Runtime Assertions assert(scalar-expression) 프로그램 실행과정에서 작동 포인터에 메모리가 잘 할당되었는지 변수가 제대로 할당되었는지 등등 Compiler Settings and Flags Phases of Software Development Analysis Debugging Bug Fixing Testing Verify.. 2022. 11. 7.
Ch.1 Computer Abstractions and Technology 서론 컴퓨터 응용 분야의 종류와 그 특징 개인용 컴퓨터, 서버, 슈퍼컴퓨터, 임베디드 컴퓨터 임베디드 컴퓨터 : 임베디드 컴퓨팅 시스템은 한 가지 응용을 수행하거나 서로 연관된 일련의 프로그램을 실행하도록 설계되어 있다. 보통 임베디드 컴퓨터는 다른 하드웨어와 한 덩어리로 묶인 단일 시스템으로 공급되기 때문에 도처에 깔려 있어도 대부분의 사용자는 자기가 컴퓨터를 사용하고 있다는 사실조차 인식하지 못한다. 자동차, 텔레비전, 비행기나 화물선을 제어하는 프로세서 등이 이에 포함된다. 1.2 Seven Great Ideas in Computer Architecture Abstraction 하위 수준의 상세한 사항을 안보이게 함으로써 상위 수준 모델을 단순화한다. Common Case Fast 자주 생기는 일을.. 2022. 10. 31.
'Static' in C language Variable 프로그램이 시작될 때 할당 프로그램이 종료될 때 파괴 Function 외부 파일에서 접근할 수 없음 - 같은 프로젝트 내의 다른 소스코드에서 동일한 이름의 함수를 여러개 생성 가능 (외부에서 접근할 수 없기 때문에 가능하다) 2022. 10. 27.
객체 지향 프로그래밍 OOP Object Oriented Programming 어디서나 설명하는 기본적인 개념에 대해 먼저 정리해본다. 기본 개념 1. Abstracition (추상화) '컴퓨터의 구조와 설계' 중 컴퓨터 설계자와 프로그래머는 자원의 수가 급격히 증가함에 따라 설계 시간이 길어지는 방지하기 위해서 생산성을 높이기 위한 기술을 개발해야 했다. 하드웨어와 소프트웨어의 생산성을 높이는 핵심 기술 중 하나는 여러 수준에서 설계를 명시하는 추상화(Abtraction)이다. 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준의 모델을 단순화한다. 2. Encapsulation (캡슐화) 정보은닉 다른 곳에서 미치는 영향을 최소화 3. Generalization (상속) 4. Polymophism (다형성) 클린코드 중 추상 인터페이스를 제공해 사용자가 구현을 모른채 자료.. 2022. 10. 25.
Program Structure Principles of Componentization sources include files coupling and cohesion low coupling, high cohesive Code Reuse Standard library에 존재하는 기능의 함수는 새로 만들지 말고 가져다가 사용하자 -> 다른 사람들이 더 빨리 이해 가능 Data Abstractions public interface implementaion details Opaque Types external header files remain private Executables 컴파일러는 코드를 object 파일로 출력한다. link phase를 지나면 excutables로 출력됨 - a.out , foo.exe - a library - a.. 2022. 10. 19.
PreProcessing The Compliation Process PreProcessor는 source code 가 translator 에서 object code 로 translate 되기 전에 run 한다. tokens 문자에만 반응한다. ex # 코드들을 치환시킨다. Preprocessed output files 는 .i 파일로 나타난다. 파일을 보기위한 명령어는 Clang, gcc, Visual C++ 별로 command 가 다르다. File Inclusion #include 어떤 source file의 내용을 다른 source file 에 insert 할 수 있다. insert 하는 파일을 header file 이라 칭한다. #include 컴파일러 라이브러리 폴더 #include "foo.h" 현재 디렉토리 -> 파일.. 2022. 10. 17.