프로그래밍

    [Vim] 파일 열기, 저장, 종료

    [Vim] 파일 열기, 저장, 종료

    이제 본격적으로 vim 의 사용법에 대해 알아보겠습니다. 파일 열기 리눅스 쉘 프롬프트 상에서 vim hello.c 이렇게 명령어를 입력하면 vim 이 실행되면서 hello.c 파일이 열립니다. 만약에 hello.c 파일이 존재하지 않는 다면 새로 생성합니다. 이렇게 새로 생성하게 되면 하단에 “hello.c” [새 파일] 이라고 표시가 됩니다. 하지만 vim에서 저장을 하지 않으면 실제로 파일이 생성되지는 않습니다. (메모리 상에만 존재하는 거죠) vim이 처음 실행되면 일반 모드로 시작되기 때문에 바로 편집을 할 수 없습니다. i 키를 통해 입력 모드로 전환해서 편집을 해보겠습니다. 입력 모드로 진입하면 하단에 -- 끼워넣기 -- 라고 표시가 됩니다. (한글이나 워드 등에서 삽입 모드와 같습니다) 저..

    [C언어 강좌-3] 변수(Variable)의 이해

    [C언어 강좌-3] 변수(Variable)의 이해

    안녕하세요 피터입니다.오늘은 프로그래밍에서의 변수에 대해 알아보겠습니다. 1. 변수는 무엇인가?우선 프로그래밍을 할 때 변수라는 것이 왜 필요한지부터 짚어볼 필요가 있습니다. 여러분들이 계산기로 통장에 들어올 실제 월급을 계산해본다고 가정해보겠습니다. 우선 기본급여에 각종 수당을 더하고 보너스(!)도 더해 총 급여를 구합니다.그리고 급여에 따른 소득세와 4대보험료 등을 더해 총 세금을 구합니다.이제 총 급여에서 총 세금을 빼면 내 통장에 들어올 실제 월급을 구할 수 있겠죠. 이 과정을 계산기로 하다 보면 총 급여나 총 세금 등 여러 값들을 더해서 구한 중간 값을 어딘가 적어놓지 않으면 잊어먹어서 다시 구해야 할 때가 종종 발생합니다. 프로그램을 개발할 때에도 마찬가지입니다. 위에서 계산기로 월급을 계산할..

    [Vim] 모드 이해

    [Vim] 모드 이해

    Vim을 이해하려면 vim에 존재하는 여러 가지 모드(Mode)를 이해해야 합니다. 이러한 모드가 vim의 가장 큰 특징이라고 할 수 있습니다. 여러 모드들로 인해 강력한 기능을 수행할 수 있지만 vim을 배우려는 사람들에게 진입장벽이 되는 것도 사실입니다. 때문에 vim의 러닝커브(Learning curve)는 다른 에디터에 비해 남다를 수 밖에 없는데요.이를 재밌게 표현한 그림이 있어서 소개해드립니다. 조금 과장되긴 했지만 그만큼 vim과 emacs가 강력하지만 익숙하게 다루는 게 힘들다는 것을 잘 표현하고 있네요. 사실 저도 vim을 처음 실행했을 때 바로 문서 편집이 안되서 당황했던 기억이 납니다. 그럼 이제부터 vim의 모드에 대해 간략하게 설명드리겠습니다.vim에는 굉장히 다양한 모드가 있는데..

    [Vim] 소개 (vim의 역사 및 장점)

    [Vim] 소개 (vim의 역사 및 장점)

    Vim 에디터는 유닉스 월드에서 오랜 세월 전통을 이어온 vi 에디터의 진보된 형태입니다. 텍스트 기반의 CLI 환경에서 주로 사용되다 보니 요즘 나오는 에디터와는 확연하게 형태로 디자인되어 있습니다. 모바일에서도 3D게임이 펄펄 나는 요즘 텍스트 환경 기반의 에디터를 사용하는 것이 시대에 뒤쳐져 보일지 모르지만vim은 그래픽 환경의 다른 에디터에 비해 실행 속도가 수십 배는 빠르고 사용하는 리소스도 현저히 작습니다. vi는 만들어진지 30년이 넘은 에디터지만 계속해서 발전해와 지금도 여전히 강력한 기능으로 사랑받고 있습니다. 게다가 국제화 규격에 맞춰서 유니코드(Unicode)나 다른 언어권 문자까지 지원하고 있기 때문에 국제화가 추세인 요즘 시대에 걸맞는 에디터라고 볼 수 있습니다.여러분이 unix ..

    응용프로그램 메모리 구조

    응용프로그램 메모리 구조

    개요 안녕하세요 피터입니다. 오늘은 응용프로그램의 메모리 구조에 대해 설명드리겠습니다. 메모리 구조에 대해 이해하고 있어야 여러분이 만든 프로그램이 컴퓨터에서 어떻게 동작하는지 이해할 수 있습니다. 이러한 컴퓨터 구조에 대한 이해가 궁극적으로는 더 효율적이고 안정적인 프로그램을 만들 수 있는 통찰력이 됩니다. 여러분이 작성한 코드는 컴파일 과정을 거쳐 실행 가능한 코드(File)이 됩니다. [컴파일 과정 자세히 보기 Click!] 실행파일을 실행하면 OS에서 해당 실행파일을 주기억장치(RAM)으로 적재(Load)를 합니다. 이렇게 적재된 실행코드들(Instruction)이 순차적으로 CPU 레지스터(Register)에 옮겨져 실행되는 것입니다. 그러면 메모리에 적재된 여러분의 프로그램이 어떤 구조를 갖게..

    [C언어 강좌-2] C언어 컴파일 과정

    [C언어 강좌-2] C언어 컴파일 과정

    안녕하세요 피터입니다. 오늘은 지난시간에 이어 C언어의 컴파일 과정에 대해 설명드리겠습니다.앞서 여러분이 작성했던 Hello world 코드가 컴퓨터에서 실행이 되려면 우선 컴파일(Compile) 과정을 거쳐야 합니다. 컴파일은 예전에 언급드렸던 것처럼 사람이 이해할 수 있는 언어로 되어 있는 프로그램 코드를 컴퓨터가 이해할 수 있는 언어로 변환하는 작업입니다. 컴파일 과정은 프로그램을 만드는 데 있어서 반드시 알아야 하는 내용은 아니지만 이 과정을 머리속에 담고 있는 개발자는 앞으로 무수히 부딪히게 될 많은 문제나 오류들을 이해하는데 훨씬 큰 이점을 얻게 될 것입니다.조금 생소하고 어렵게 느껴지실 수도 있지만 컴퓨터를 이해하는데 한걸음 다가간다고 생각하고 차근차근 따라와주세요.이제부터 gcc를 통해 C..

    [C++] 포인터(Pointer)와 레퍼런스(Reference : 참조자)의 차이

    [C++] 포인터(Pointer)와 레퍼런스(Reference : 참조자)의 차이

    안녕하세요 피터입니다. 오늘은 C언어를 배운 후 C++을 공부하는데 있어서 굉장히 헷갈리는 개념인 포인터와 레퍼런스의 차이에 대해서 설명드리겠습니다. 개요 C++ 프로그래밍을 시작하면 레퍼런스(Reference : 참조자)라는 새로운 개념을 접하게 됩니다. 언뜻 보면 C언어를 공부할 때 여러분들을 굉장히 괴롭혔던 포인터(Pointer)와 유사해 보이는데 어떠한 대상을 가리킨다는 점에서는 같습니다. 하지만 포인터와 레퍼런스는 여러가지 차이점이 있습니다. 그 중에 여러분이 C++ 프로그래밍을 할 때 반드시 알아야 할 두 가지 중요한 차이점을 짚어드리겠습니다. 1. NULL 허용 여부 우선 NULL값을 허용하는 가에 대한 문제입니다. 포인터는 아시다시피 NULL을 허용하지만 레퍼런스는 NULL이 허용되지 않습..

    [C언어 강좌-1] Welcome to Hello world

    [C언어 강좌-1] Welcome to Hello world

    안녕하세요피터입니다. 오늘 강의에서는 C언어에 대해 차근차근 알려드리겠습니다. 현재 디바이스에 들어가는 펌웨어(firmware)나 임베디드(embedded) 분야에서 독자적인 영역을 구축하고 있으며, C언어는 현존하는 고급 언어중에 가장 컴퓨터를 잘 이해할 수 있는 언어입니다. C언어는 오래되서 별로 배울 가치가 없다고 생각하시는 분들이 계시다면 아직 C언어를 배워야 할 이유가 충분히 있다고 말씀드리고 싶습니다. C언어는 컴퓨터를 이해하는 데 있어서 굉장히 중요한 언어이기 때문입니다. C언어가 컴퓨터에 대해 가장 잘 이해할 수 있다는 점에 대해서는 강좌를 진행하면서 중간 중간 설명드리겠습니다. 자! 그럼 본격적으로 시작해볼까요~ 프로그래밍 공부에서는 역시 코딩이 빠질 수 없겠죠? 우선 세계에서 가장 유명..