본문 바로가기

반응형

분류 전체보기

(291)
컴퓨터 구조 (입출력 장치 & 시스템 버스) 이전 글에서 다룬 컴퓨터 구조의 요소 중 CPU, Memory에 이어 입출력 장치와 시스템 버스에 대해 알아보겠습니다. 컴퓨터 구조 (CPU & Memory) 컴퓨터 구조는 컴퓨터를 구성하고 있는 구성 요소의 동작 요소와 특징을 고려해 컴퓨터가 어떤 방식으로 명령을 받아 연산을 수행하며, 데이터를 표현하는지에 대한 전반적인 것을 의미합니다. bloginformation.co.kr 입출력 장치 입출력 장치 (IO : Input/Output)는 데이터를 입력하고 출력하는 데 필요한 인터페이스 역할을 수행합니다. 쉽게 풀어 설명하면, 입출력 장치는 주변 장치(peripheral)와 같다고 말할 수 있습니다. 그런 만큼 종류가 많고 다양하며, 중앙처리장치(CPU)나, 기억장치(Memory)와는 동작 방법이 다릅..
컴퓨터 구조 (CPU & Memory) 컴퓨터 구조는 컴퓨터를 구성하고 있는 구성 요소의 동작 요소와 특징을 고려해 컴퓨터가 어떤 방식으로 명령을 받아 연산을 수행하며, 데이터를 표현하는지에 대한 전반적인 것을 의미합니다. 이를 이루고 있는 하드웨어는 크게 '중앙 처리 장치', '기억 장치', '입출력 장치', '시스템 버스'로 나눌 수 있습니다. 오늘은 그중 '중앙 처리 장치(CPU)'와 '기억장치(Memory)'에 대해 알아보겠습니다. 중앙처리장치 (CPU) 중앙처리장치(CPU: Central Processing Unit), 프로세서(Processor)는 사람의 뇌와 같은 역할을 수행하는 컴퓨터의 성능을 좌우하는 장치입니다. CPU는 입출력 장치로부터 입력을 받으면 어떻게 해석하고 처리할 것인지를 판단하는 역할을 수행합니다. 이러한 역할을..
코딩 컨벤션 (Coding Convention) 코딩 컨벤션(Coding Convention)은 코딩 표준, 코딩 스타일이라고 하며, 가독성이 좋고 일관된 코드 즉, 클린 코드를 작성하고 이를 유지하기 위해 어떻게 코드를 작성해야 하는지 암묵적으로 정해진 규칙입니다. 이러한 코딩 컨벤션 중 언어별로 공통적으로 통용되는 컨벤션에 대해 몇 가지 알아보겠습니다. 네이밍 규칙 첫번째로 살펴볼 네이밍 규칙은 파스칼 케이싱(Pascal Casing)입니다. 이는 클래스, 열거형, 이벤트 등의 이름을 만들 때 대문자로 시작하고, 복합어일 경우에 중간에 시작하는 새로운 단어를 대문자로 적는다는 규칙입니다. 파스칼 케이싱의 예시로는 UserClass, MainFrame, SubFrame 등이 있습니다. 다음으로는 카멜 케이싱 (Camel Casing)입니다. 카멜 케..
리팩토링(Refactoring) 리팩토링(Refactoring)을 한 문장으로 요약하면 '나쁜 코드를 좋은 코드로 바꾸는 것'이라고 할 수 있습니다. 이를 수행하기 위해서 이미 작성한 소스코드에서 구현된 기능과 로직을 변경하지 않고, 내부 구조를 변경합니다. 리팩토링이 필요한 이유 리팩토링이 필요한 이유는 좋은 코드를 작성했을 때 얻을 수 있는 장점들과 많은 유사성을 가집니다. 리팩토링을 통해 가독성이 좋은 코드가 되고, 소스코드를 더욱 이해하기 쉽게 만들며, 버그를 쉽게 찾을 수 있게 되어주고, 프로그램을 빨리 작성할 수 있도록 도움을 제공합니다. 리팩토링이 필요할 때 나쁜 코드를 좋은 코드로 바꾸기 위한 리팩토링이 필요할 때는 먼저 '유사한 내용이 세 번 이상 반복될 때'가 있습니다. 앞서 작성했던 에서 언급한 바와 같이 코드에 반..
좋은 코드(클린 코드)란 무엇인가 글을 쓸 때도 잘 읽히는 글을 쓰기 위해서는 한 문단에 한 주제를 담거나, 두괄식으로 문장을 쓰거나 접속사를 활용하는 등의 방법을 사용할 수 있습니다. 소스코드라는 것도 개발자의 논리적인 생각을 표현한 일종의 글이므로, 좋은 글을 쓰는 방법과 같이 좋은 코드를 쓰는 방법 또한 존재합니다. 소스코드만 보고 협업을 하는 다른 팀원들이 논리가 간단하고 가독성이 좋아 쉽게 이해한다면 이를 좋은 코드, 즉 클린 코드라고 말합니다. 처음 코드를 작성할 때부터 잘 짜 둔다면 수정 및 변경이 필요할 때 큰 힘을 들이지 않고, 비교적 짧은 시간 내에 수정이 가능합니다. 따라서 이상적인 코드를 작성한 경우에는 문제가 발생했을 경우 문제에 대응하는 속도에 큰 차이가 존재하지 않습니다. 그러나 저번 글에서 설명한 바와 같은 ..
개발자가 피해야 할 나쁜 코드 작성 초보 개발자들이나 개발을 배우는 학생들은 코드를 작성할 때 일단 동작이 되는 걸 중요시 여깁니다. 이후 복잡해진 코드를 나중에 수정하고, 나중에 더 잘 다듬어야겠다고 생각하며 나쁜 코드들을 방치하게 됩니다. 그러나 처음 학습할 때부터 좋은 코드를 작성하는 습관을 들여두지 않는다면 나쁜 코드들을 계속 작성하게 되고, 추후 협업을 하거나 오픈소스 프로젝트를 진행할 때, 그리고 자신이 작성한 코드를 수정할 때데도 어려움을 겪게 될 것입니다. 가독성 협업이 많은 개발자의 특성상 코드의 가독성을 높이는 것은 매우 중요합니다. 가독성이 좋지 않은 코드의 경우 다양한 문제점들이 발생하는 데 우선 불필요한 요소가 많은 코드는 협업하는 팀원들과 본인의 집중력을 흐트러트립니다. 읽기 어려운 코드는 본인도, 타인도 이해하는..
개발자들이 사용하는 툴 개발자들은 다양한 개발 요소, 학습해야 할 요소, 생각해야 할 요소들로 인해 시간이 부족하기에 효율적으로 일하고 협업하는 것이 매우 중요하다. 이러한 개발자들을 지원하기 위해서 존재하는 다양한 개발용 툴이 존재한다. 협업 툴 먼저 깃(Git), 깃허브(Github)에 대해 살펴보면, 깃(Git)은 소스코드 및 프로젝트의 변경을 관리하는 버전 관리 소프트웨어로 로컬에서 버전을 관리하고, 소프트웨어 개발 및 소스 코드 관리에 사용된다. 이는 오프라인 작업이 가능하고, 속도가 빠르며, 로컬 저장소를 이용하여 일시적인 서버 장애가 발생해도 개발을 계속할 수 있다는 등의 장점이 존재하지만, 기존의 형상관리 도구에 비해 덜 직관적이고, 배우기에 어렵다는 단점 또한 가지고 있다. 깃허브(Github)는 대표적인 깃을..
IDE (통합개발환경) IDE(통합개발환경)는 무엇인가 IDE(Integrated Bevelopment Environment)는 소프트웨어 개발에 사용되는 공통적인 기능을 하나로 모아둔 것으로, 개발자를 위한 종합 프로그램이다. 이는 라이브러리나 프레임워크처럼 소프트웨어 개발에 있어 직접적으로 필요한 것은 아니지만, 여러 유틸리티를 수동으로 설정하거나 통합할 필요 없이 코딩을 빠르게 편리하게 진행하기 위해 사용된다. IDE는 통합개발환경이라는 단어 뜻 그대로 개발하면서 사용되는 도구를 모아준 것이다. 여기에는 소스코드 작성에 필요한 텍스트 편집기와 언어팩, 구문(syntax) 하이라이팅, 깃(git)연동, 터미널 등과 같은 기능이 존재하여 제공된다. 메모장과 같은 일반적인 텍스트 편집기에서도 실행환경만 갖추어져 있다면 컴파일과..
라이브러리와 프레임워크 종류 라이브러리 종류 라이브러리는 크게 표준 라이브러리(Standard Library)와 외부 라이브러리로 나눌 수 있다. 먼저 표준 라이브러리는 프로그래밍 언어의 여러 구현체에서 통용될 수 있도록 만들어진 라이브러리로, 특정 언어를 처음 배울 때 콘솔 창에 "Hello World!"를 출력하는데 이때 콘솔에 글자를 출력하는 함수를 직접 작성하지 않았지만, 내장 함수인 표준 라이브러리가 제공되어 사용되는 것이다. 이러한 표준 라이브러리는 프로그래밍 언어가 기본적으로 가지고 있으며, C 표준 라이브러리, C++ 표준 라이브러리, 자바 클래스 라이브러리(JCL) 등이 존재한다. 외부 라이브러리는 표준 라이브러리와 다르게 누구나 개발해서 사용하고 공유할 수 있도록 별도의 파일을 설치하거나 설정해서 사용하는 라이브러..
라이브러리(Library)와 프레임워크(Framework) 개발을 수행함에 있어 서비스 개발의 품질만큼이나 개발 속도의 중요성이 강조되고 있다. 가지고 있는 아이디어를 IT 서비스로 구체화하고 빠르게 시장을 점유해야 비즈니스가 성공할 수 있다. 그러나 실제 개발을 위해서는 매우 단순한 앱을 만들 때에도 각 기능을 구현하고, 각 기능들이 잘 동작하도록 로직과 구조를 설계해야 한다. 실제로 이 모든 일들을 처음부터 직접 진행한다면 긴 시간이 소요되고, 경쟁력이 떨어질 것이다. 이때 오픈소스를 이용하여 누군가 미리 만들어 둔 라이브러리를 활용한다면, 새로운 기능을 전부 만드는 대신 가지고 있는 아이디어를 구현하는데 더욱 힘쓰고, 시간을 절감할 수 있다. 라이브러리 (library) 라이브러리는 스프트웨어의 구성요소 중 한 가지로, API를 바탕으로 플랫폼에서 바로 실..

반응형