Advanced
[Tips] 프로그래밍을 시작하기 전에
[Tips] 프로그래밍을 시작하기 전에
2017.04.03프로그래밍을 시작하기 전에이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 프로그램컴퓨터에 어떤 일을 시키기 위해서는 컴퓨터에 어떤 일을 어떻게 해야 하는지 자세히 알려줘야 합니다. 여기서 '어떤 일'에 대한 설명이 바로 프로그램이고, 프로그래밍은 그런 프로그램을 작성하고 테스트하는 작업입니다.이러한 관점에서 보면 우리는 이미 프로그래밍과 비슷한 작업을 해본 경험이 있을 것입니다. '목적지까지 가는 가장 가까운 방법'과 '요리를 하는 방법' 등 작업을 완료하는 방법을 항상 생각하며 살아가고 있습니다. 사람과 컴퓨터의 차이그렇다면 위의 설명과 프로그램의 차이는 무엇일까요? 그것은 정확도에 있습니다. 사람에게 이야기할 때는 설명이 불충분하..
[Tips] 프로그램 제작 과정
[Tips] 프로그램 제작 과정
2017.04.02프로그램 제작 과정이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 변화해야 하는 프로그램여러분들은 프로그램을 만들 때 프로그램의 신뢰성을 가장 중요하게 생각해야 합니다. 프로그램이 의도한 대로 동작하지 않아서 그것을 신뢰할 수 없다면 심각한 상황이 일어날 수도 있습니다. 그래서 우리는 프로그램을 만들 때 잘 설계해야 합니다. 프로그램이 의도한 바와는 전혀 상관없는 일을 하거나, 우리를 짜증 나게 하는 일을 한다면, 그 프로그램은 누구도 이용하지 않을 것입니다.지금까지 프로그래머가 아닌 사람들의 입장에서 소프트웨어를 살펴봤는데, 이러한 가치를 프로그래머의 이상으로 삼고 항상 명심해야 합니다. 성공적인 소프트웨어를 만들고 싶다면 특히 개..
[Tips] 컴퓨터 과학과 프로그래밍
[Tips] 컴퓨터 과학과 프로그래밍
2017.04.02컴퓨터 과학의 관점에서 프로그래밍이란이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 컴퓨터 과학과 프로그래밍프로그래밍은 컴퓨터 과학이나 컴퓨터 공학, 소프트웨어 공학, 정보 기술 등 소프트웨어 관련 학과의 하위 분야로 볼 수 있습니다. 그리고 프로그래밍은 과학과 공학은 물론 물리학, 생물학, 약학, 역사학 등 여러 학문에서 컴퓨터와 정보에 관련된 부분을 가능하게 하는 기술이기도 합니다.위키피디아에서는 컴퓨터 과학을 다음과 같이 설명하고 있습니다.컴퓨터 과학(Computer science)은 전산 및 그 응용기술에 대한 과학적이고 실용적인 접근을 의미한다. 전산 이론 및 전산 시스템 설계를 다루는 전문가를 컴퓨터 과학자라 부른다.컴퓨터..
[Tips] 소프트웨어와 프로그래머
[Tips] 소프트웨어와 프로그래머
2017.04.01소프트웨어와 프로그래머 이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 소개다른 대부분의 학습과 마찬가지로 프로그래밍의 학습은 다음과 같은 많은 의문을 남기곤 합니다. 배우면 좋다고들 하지만, 왜 배워야 하는지 궁금합니다. 실용적인 기술을 배우고 싶지만, 유행에 따라서 잠시 뜨고 있는 기술을 배우기는 싫습니다. 이런 생각이 들었다면 이 글을 가볍게 훑어봅시다. 그리고 나중에 기술적 세부 사항이 실전에서 중요한 이유를 되새기고 싶다면 이 글을 다시 읽어보시기 바랍니다.이 글에서는 프로그래밍이 흥미롭고 중요한 기술인 이유, 즉 프로그래밍이라는 분야가 수십 년 동안 계속해서 발전하는 이유가 무엇인지 설명합니다. 이 글의 내용을 바탕으로 프..
==과 =의 오타를 피하는 방법
==과 =의 오타를 피하는 방법
2016.12.23==과 =의 오타를 피하는 방법다음과 같은 소스코드가 있다고 해봅시다.if (num == 10) printf("num은 10입니다. \n");cs만약, 이 코드를 잘못입력해서 if (num = 10)과 같이 입력을 했을 때 문법적으로는 틀린 것이 없으므로 문법 오류가 발생하지 않아서 발견하기가 상당히 어려운 언어가 됩니다.하지만, if (10 == num)으로 순서만 바꾸면 문법적으로는 아무런 이상이 없으며, ==를 잘 못 입력해서 =으로 입력했을 시 if (10 = num)이 되어서 문법 오류가 발생하므로 논리에러를 잡아내는 데 유용합니다.
임시변수 없이 swap 구현하기
임시변수 없이 swap 구현하기
2016.12.22임시변수 없이 swap 구현하기먼저 이 방법을 알려주는 것은, 이 것이 위험하기 때문에 지양해야 한다는 것을 알리기 위함입니다.먼저, 그 방법을 소개해보면 #define SWAP(x, y) {(x)^=(y)^=(x)^=(y);} 이와 같은 매크로가 정의되어 있다고 해봅시다.int main() { int x = 10; int y = 20; printf("X = %d, Y = %d", x, y); x ^= y ^= x ^= y; //SWAP(x, y); printf("X = %d, Y = %d", x, y); return 0;}Colored by Color Scriptercs위의 코드와 같이 매크로가 풀리게 될 텐데, 이것을 하나씩 뜯어보면 제일 위의 것부터 x ^= y; -> x = x ^ y; 그러면 x..
do { ... } while(0) 을 사용하는 이유
do { ... } while(0) 을 사용하는 이유
2016.12.21do { ... } while(0) 을 사용하는 이유원문 : https://kernelnewbies.org/FAQ/DoWhile0리눅스 커널 등의 소스 코드를 보게 되면, "do { ... } while(0)"과 같은 것을 많이 씁니다. 당연히 중괄호 안의 내용이 한 번만 실행되고 끝나는 프로그램인데, 왜 이렇게 만들었을까요?다음과 같은 이유가 있습니다. ▶ Miller : 빈 구문(empty statement)는 컴파일러가 경고를 냅니다. ▶ Miller : 지역 변수를 선언할 수 있는 구역을 만들어줍니다. ▶ Collins : 조건문을 포함한 코드에서 복잡한 형태의 매크로를 사용할 수 있도록 해줍니다.#define FOO(x) \ printf("arg is %s\n", x); \ do_somethin..