"문자 (프로그래밍)"의 두 판 사이의 차이
잔글 (Asadal님이 문자 문서를 문자 (프로그래밍) 문서로 이동했습니다) |
잔글 (→같이 보기) |
||
124번째 줄: | 124번째 줄: | ||
* [[아스키]] | * [[아스키]] | ||
* [[유니코드]] | * [[유니코드]] | ||
+ | * [[UTF-8]] | ||
* [[원시재귀함수]] | * [[원시재귀함수]] | ||
* [[튜링]] | * [[튜링]] |
2021년 8월 19일 (목) 00:52 판
문자(文字, character)는 프로그래밍 분야에서 컴퓨터와 기계 기반 전기통신 용어로서, 자연어 기록 형태의 알파벳이나 음절 문자와 같은 상징 따위와 일치하는 정보의 단위이다.[1] 흔히 char이라고 쓴다.
목차
개요
프로그래밍 분야에서 '문자'는 컴퓨터에게 명령을 내릴 수 있도록 도와주는 도구를 말한다.[2]
등장배경
문자는 수학에서 등장하였으며 쿠르트 괴델은 불완전성 정리를 증명하는 과정 중에 알고리즘을 추상화시킨 원시재귀함수(primitive recursive function) 개념을 만들고, 이를 이용하여 증명에 성공하였는데, 수학적으로 본다면 이것이 최초의 프로그래밍 언어라 볼 수 있다. (굳이 따지자면 함수형 언어라 할 수 있다) 그리고, 그 후에 컴퓨터의 아버지라 불리는 튜링은 불완전성 정리를 보고 자신의 방식도 될 것 같다고 생각하며 연구를 하는데, 여기서 이 원시 재귀 함수와 동치인 튜링머신을 발표하고 이 튜링머신을 이용하여 불완전성 정리를 다시 한번 증명해 보인다. 이는 어떤 체계를 통해서 이 체계의 모순성을 증명할 방법은 없다는 것과 동치이다.
- 계산 가능성 이론(Computability Theory)이라는 수학의 분야가 생기면서 기존의 원시재귀함수를 확장한 람다 미적분(Lambda calculus)과 무제한 등록기(Unlimited register machine : URM), 프로그래밍(While-programming), SKI 등등 알고리즘을 표현하기 위한 여러 가지 체계들이 등장한다.[3]
종류
다음은 프로그래밍 문자 종류이다.
변환
- %d : 10진수로 출력하는 정수형이다.
- %f : 실수형이다.
- %e : 지수형이다.
- %o : 8진수로 출력한다.
- %x : 16진수로 출력한다.
- %u : 부호없는 10진수로 출력한다.
- %g : 실수형으로 자동 출력한다.
- %p : 포인터의 주소를 출력한다.
- %c : 하나의 문자로 출력 문자형이다.
- %s : 문자열을 출력한다.[4]
널
아무것도 없음을 값으로 표현한 문자(빈 값)를 표현한 것이다.[5]
프로그래밍
프로그램(함수 등)이 자료 검색 후 해당 값을 못 찾았을 때, 메모리 할당 실패 때 등의 경우에, 넘겨주는(반환) 값을 말한다.
- 유의점 : 널 문자(null)는, 공백 문자 ""(empty) 또는 " "(space, 아스키(ASCII) 32)와는 다르게 취급한다.
- `==`과 같은 비교 연산 때, 널(null)을 공백 ""(empty)과 같은 것으로 간주하기도 한다.[5]
특수
다음은 특수기호 : 한글(영어단어)을 보여주는 거다. (한글 뜻이 없는 것은 발음을 붙였다.)
- ' : 그레이브(Grave)
- ~ : 물결표시(Tilde)
- ! : 느낌표(Exclamation)표시(Mark)
- @ : 골뱅이(At)
- : 샾, 우물정(Number , Sharp)
- $ : 달러(Dollar)
- % : 퍼센트(Percnet)
- ^ : 캐럿(Caret)
- & : 엠퍼센드(Ampersand)
- * : 별표(Asterisk)
- - : 마이너스(Hyphen, Dash)
- _ : 밑줄(Underscore, Low dash)
- = : 이꼬르(Equals)
- " : 큰 따옴표(Quotation)
- ' : 작은 따옴표(Apostrophe)
- : 콜론(Colon)
- 세미콜론(Semicolon)
- . : 점, 마침표(Period, Dot)
- ? : 물음표(Question)
- / : 슬래쉬(Slash)
- 수직바(Vertical bar)
- \ : 백슬래쉬(Backslash)
- () : 소괄호(Parenthesis)
- {} : 중괄호(Brace)
- [] : 대괄호(Bracket)
- <> : 꺽쇠 괄호(Angle Bracket)등이 특수 문자다.[6]
집합
비주얼 스튜디오(Visual Studio)에서는 프로젝트 속성 메뉴에 문자 집합이란 항목이 있다. 옵션은 크게 세 가지 설정 안 함(Not Set), 멀티바이트 문자 집합 사용(Use Multi-Byte Character Set), 유니코드 문자 집합 사용(Use Unicode Character Set)가 있다. 컴퓨터에서는 데이터를 처리하기 위해 2진법을 쓴다. 즉 컴퓨터에서는 숫자를 처리할 수는 있지만, 문자는 기본적으로 처리가 불가능해서 문자를 처리하기 위해 문자 집합(Character Set)이라는 것을 사용한다. 이 중에서 대표 코드는 아스키 코드이고 아스키코드는 이름 그대로 미국 표준 문자 집합이기 때문에 해당 문자 집합에는 전 세계 언어를 표현하기 위한 약속이 되어 있지 않다. 그리하여 만들어진 문자 집합이 바로 유니코드(UNICODE)이다. 유니코드는 전 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 처리하기 위한 국제 표준이다.
- 아스키코드 : 문자 하나를 표현하기 위해 메모리 1byte를 필요하다.
- 유니코드 : 문자 하나를 표현하기 위해 최소 2byte를 필요하다.
이러한 문자 집합들은 크게 3가지로 나눈다.[7]
SBCS
싱글 바이트 케릭터 집합(SBCS : Single Byte Character Set) : 문자 하나를 표현 하는 데 있어 1바이트를 사용하는 방식이고 대표적인 문자 집합은 아스키코드다.[7]
MBCS
멀티 바이트 케릭터 집합(MBCS : Multi Byte Character Set) : 문자 하나를 표현 하는 데 있어 다양한 바이트 수를 사용하는 방식이고 대표적인 문자 집합은 유니코드이다.[7]
WBCS
측면 바이트 케릭터 집합(WBCS : Wide Byte Character Set) : 문자 하나를 표현 하는 데 있어 2바이트를 사용하는 방식이고 아스키코드와 유니코드를 혼용하여 사용할 수 있는 방식인 거다.[7]
구분
어떤 문자 인지 구분하는 함수가 많이 쓰이고 있다.
- int isalpha(int c) : 주어진 문자가 알파벳 인지 검사한다.(A-Z, a-z)
- int isalnum(int c) : 주어진 문자가 알파벳 또는 숫자인지 검사한다.(A-Z, a-z. 0-9)
- int isdigit(int c) : 주어진 문자가 숫자인지 검사한다.(0-9)
- int isxdigit(int c) : 주어진 문자가 16 진수인지를 검사한다.(0-9, a-f, A-F)
- int iscntrl(int c) : 제어(control)문자인지를 검사한다.
- int isspace(int c) : FF('\f'), NL('\n'), CR('\r'), HT('\t'), VT('\v'), 공백문자(' ')등을 검사한다.
- int ispunct(int c) : 알파벳문자 혹은 공백문자가 아닌 출력가능한 문자인지 확인한다.
- int isgraph(int c) : 공백문자를 제외한 출력가능 문자인지 검사한다.
- int isprint(int c) : 공백문자를 포함한 출력가능한 문자인지 검사한다.
- int islower(int c) : 소문자인지 검사한다. a-z
- int isupper(int c) : 대문자인지 검사한다. A-Z
- int tolower(int c) : 입력된 문자를 대문자로 변경한다.
- int toupper(int c) : 입력된 문자를 소문자로 변경한다.
단. 같은 종류일 경우 0이 아닌 값을 같은 종류의 문자가 아닐 경우 0을 반환한다.[8]
전망
다음은 프로그래밍 언어와 관련된 기사 내용이다. 소프트웨어 개발 분석 기관인 레드몽크(RedMonk)의 2020년 최신 순위에 따르면, 파이썬(Python)이 자바(JAVA)와 함께 가장 인기 있는 프로그래밍 언어 2위에 올랐다. 1위는 자바스크립트(Javascript)가 차지했다. 가장 인기 있는 프로그래밍 언어인 자바와 파이썬, 자바스크립트를 비교해보자.
- 자바 : 자바는 1995년에 사용되기 시작한 객체지향 프로그래밍 언어다. 객체지향이라는 말은 절차에서 상대적으로 자유롭고, 기능에 중점을 두었음을 뜻한다. 자바, 파이썬, 자바스크립트 셋 모두 객체지향 언어지만 자바는 다른 두 언어 파이썬, 자바스크립트와는 달리 자료형을 지정해줘야 한다. 자바에서 숫자 변수를 선언할 때는 정수인지 실수인지 등을 정해줘야 하고, 문자 변수를 선언할 때는 문자열로 자료형을 정해야 하는 번거로움이 있다. 다만 이렇게 배우면 컴퓨터가 사고하는 방식, '컴퓨팅적 사고'를 익히는 데 도움이 될 수 있다. 컴퓨터에 가깝다는 언어로 평가받는 C언어가 자바처럼 자료형을 지정해주는 것이다.
- 장점 : 자바는 비교할 다른 두 언어에 비해서는 상대적으로 나온 지 오래됐다. 오래된 언어인 자바가 그래도 인기를 유지하는 이유는 수많은 사용자의 레퍼런스를 보유하고 있기 때문이다. 타 언어를 전문적으로 사용하는 개발자들도 자바는 다루는 경우가 많고, 따라서 오픈소스나 프레임워크도 많다. 프레임워크와 라이브러리는 일종의 도구 모음으로, 자주 사용하는 함수나 기능을 모아 하나의 세트로 미리 만들어둔 것을 말한다. 자바의 큰 특징은 이식성이 좋다는 것이다. 자바 언어를 사용해서 개발된 프로그램이나 애플리케이션은 자바 가상 기계(JVM) 위에서 실행된다. 기기나 운영체제에 무관하게 자바 가상 기계만 있으면 동일한 프로그램을 실행할 수 있다는 것이 장점이다. 국내의 경우 '전자정부 표준프레임워크'로 지정된 언어가 자바라서, 아직도 정부 주도의 많은 프로젝트는 자바를 이용한다. 이러한 연유로 자바 개발자들이 국비지원과정으로 많이 양성됐으며 관련 일자리가 꾸준히 공급되고 있다.
- 사용처 : 주 사용 영역은 앱이며 그중에서도 특히 모바일 안드로이드 앱이지만, 모바일뿐 아니라 PC용 애플리케이션에도 주로 사용된다. 자바는 프론트엔드 개발과 백엔드 서버 개발 양측에 사용되고, 임베디드 시스템 등에도 활용된다. 다만 다른 언어인 자바스크립트가 프론트엔드인 웹 영역에는 좀 더 특화됐다.
- 파이썬 : 파이썬은 광범위한 분야에 사용되는 객체지향 언어다. 파이썬은 1989년에 개발됐지만, 배우기 쉬운 동시에 속도도 빠르며, 다양한 확장성을 갖춰 2020년까지 무서운 속도로 성장하고 있다.
- 장점 : 파이썬은 문법이 매우 쉽고, 사람이 사용하는 문법에 상당히 가깝다는 평가를 들으며 파이썬 특유의 개발 철학에 기인한다. 쉽게, 가장 완벽한 아름다운 코드를 찾는 특유의 파이썬 철학은 간소한 문법으로 이어진다. 자바나 C언어의 경우 자료형을 지정하고, 중괄호를 겹치지 않게 입력해야하는 등 다소 코드가 지저분해질 여지가 많으나, 파이썬은 자료형도 필요 없고, 괄호도 쓰지 않아 간결하고 깔끔하게 표현된다.프로그래밍 언어 중에서 파이썬 정도의 낮은 난이도를 가지면서, 범용성을 갖추고, 파이썬 수준의 프로그램 개발 속도를 따라잡는 언어는 손에 꼽는다. 파이썬은 2010년대에 인기가 급부상하면서 다양한 프레임워크 및 라이브러리가 지원되며 이와 관련된 많은 참고자료를 찾을 수 있다는 점도 장점으로 주로 언급된다.
- 사용처 : 자바로 할 수 있는 앱 개발, 웹 개발도 파이썬으로 가능하다. 그럼에도 파이썬은 데이터 과학, 인공지능의 급부상과 함께 떠오른 언어라 이를 주 사용처로 꼽는다. 대용량 데이터를 수집하고, 처리하고, 분석하는 용도로 자주 사용된다. 이외에도 파이썬은 '만능'이라고 불리는 만큼 업무에 다양하게 활용된다. 업무 자동화를 지원하고, 소프트웨어를 통제하는 등 별별 작업들을 파이썬을 이용하면 단순히 처리할 수 있다.
- 자바스크립트 : 웹에 특화된 객체지향 언어다. 자바스크립트는 우리가 인터넷에서 웹사이트를 돌아다니면서 행동하는 대부분의 영역을 담당하고 자바와 자바스크립트는 이름은 비슷하지만 다른 언어다.
- 장점과 사용처 : 자바스크립트는 문법이 쉬워서 많은 사람들이 사용하며, 따라서 관련 정보를 얻기 쉬운 편이며 자바스크립트는 웹에서 주로 사용된다. 웹 브라우저는 일반적으로 데스크톱과 스마트폰, 태블릿에서 가장 많이 사용되는 프로그램이다. 자바스크립트는 우리가 웹브라우저에서 실행하는 동작에 대한 반응을 처리한다. 인터넷을 사용하는데 필요한 웹브라우저는 대부분 자바스크립트를 지원하기 때문에, 웹사이트를 디자인하거나 반응형 웹사이트를 만들기 위해서는 HTML, CSS, 자바스크립트를 배우는 것이 가장 빠른 지름길이다. 최근에는 크로스 플랫폼 앱 개발에도 자바스크립트가 많이 사용된다. 크로스 플랫폼이란, 모바일과 PC, 태블릿 등의 다양한 환경에서 작동하는 프로그램이다. 기존의 모바일 앱들은 주로 자바를 기반으로 개발됐으나, 웹에서 흥행한 자바스크립트가 자바의 점유율을 침식하고 있는 상황이다.[9]
행사
프로그래밍 문자와 관련된 행사도 많이 나오고 있는데 그중 현대모비스 소프트웨어(SW) 경진대회를 설명하자면현대모비스가 미래 모빌리티 분야 소프트웨어 개발 문화를 조성하고 해당 분야 우수 인재를 발굴할 목적으로 '2021 현대모비스 알고리즘 경진대회'를 개최한다.일반인 대상으로 첫 시행되는 이번 경진대회는 만 18세 이상이면 누구나 참여할 수 있다. 대학생과 관련 업계 종사자 등 코딩과 프로그래밍에 관심 있는 사람이라면 제한 없이 모두 참여가 가능하다.현대모비스는 2019년부터 소프트웨어 중심의 연구개발 문화 확산을 위해 사내 직원들을 대상으로 소프트웨어 알고리즘 경진대회를 개최해왔다. 2021년 부터는 미래 모빌리티 분야 소프트웨어 개발 저변을 확대할 목적으로 일반에까지 문호를 개방한 것이다. 이를 위해 현대모비스는 2021년 8월부터 2021년 8월 25일까지 참가 접수를 받는다. 코딩 테스트 전문 플랫폼인 프로그래머스 홈페이지를 통해 신청할 수 있다. 시상식을 제외한 예선(8,27)과 본선(9,3) 등 모든 대회일정은 코로나19 상황을 감안해 온라인으로 진행된다. 대회는 4가지 컴퓨터 프로그래밍 언어(C, C++, 자바(JAVA), 파이썬(PYTHON))를 이용해 제한시간 내 문제를 풀고 소스코드를 제출하는 방식이다. 예선 상위 50명에게 본선에 참가할 자격이 주어지며, 본선 진출자 전원에게 상금이 전달된다. 본선 1등(1명)에게는 최신형 기아(KIA) K5 자동차, 2등(2명) 1,000만원, 3등(4명) 500만원 등 총 상금 1억여원의 혜택이 주어진다.
- 현대모비스 관계자 : 미래 모빌리티 분야 소프트웨어 개발에 대한 관심이 높은 지원자들의 많은 참여와 함께, 해당 부문에서의 소프트웨어 개발 저변이 확대되기를 기대하고 있다고 말했다.
현대모비스는 자율주행, 커넥티비티, UAM으로 대표되는 미래 모빌리티 시장에서 소프트웨어와 하드웨어를 융합한 플랫폼 및 시스템 선도 기업으로 거듭나기 위해 소프트웨어 개발 전문 인력 발굴과 육성 노력을 지속적으로 강화하고 있다.그리고 2018년부터 SW 전용 교육 센터를 구축하고, 45개의 온라인 SW 교육 강좌를 마련해 직원들이 시간과 장소에 구애받지 않고 SW 역량을 개발할 수 있도록 지원하고 있으며 차량용 SW 국산화와 개발 생태계 확대를 위해 전문 개발사들과 공동으로 소프트웨어 플랫폼 개발도 진행하고 있다.[10]
각주
- ↑ 〈문자 (컴퓨팅)〉, 《위키백과》
- ↑ 〈프로그래밍 언어〉, 《네이버 지식백과》
- ↑ 〈프로그래밍 언어〉, 《나무위키》
- ↑ 프로그래밍 블로그, 〈C 언어 변환문자 의미 자료형 (%d,%f,%e,%o,%x,%u,%g,%p,%c,%s)〉, 《티스토리》, 2008-05-21
- ↑ 5.0 5.1 〈null, NULL, Null 널 문자〉, 《정보통신기술용어해설》
- ↑ inyong_pang, 〈(Programming) 특수 문자 용어 정리〉, 《벨로그》, 2020-08-03
- ↑ 7.0 7.1 7.2 7.3 jrich, 〈Visual Studio 문자 집합 정리〉, 《티스토리》, 2015-03-04
- ↑ 공간사랑, 〈문자의 종류를 알아내는 C 언어 함수들〉, 《업넷》, 2011-03-09
- ↑ 김종민 기자, 〈(MHN IT) 가장 인기 많은 프로그래밍 언어는? 자바-파이썬-자바스크립트 비교 분석〉, 《문화뉴스》, 2020-12-16
- ↑ 최광민 기자, 〈총 상금 1억원, '현대모비스 SW 경진대회' 개최... 파이썬, C, C++, 자바. 4개 프로그래밍 언어 중 하나로〉, 《인공지능신문》, 2021-08-11
참고자료
- 〈프로그래밍 언어〉, 《위키백과》
- 〈프로그래밍 언어〉, 《네이버 지식백과》
- 〈null, NULL, Null 널 문자〉, 《정보통신기술용어해설》
- inyong_pang, 〈(Programming) 특수 문자 용어 정리〉, 《벨로그》, 2020-08-03
- 공간사랑, 〈문자의 종류를 알아내는 C 언어 함수들〉, 《업넷》, 2011-03-09
- jrich, 〈Visual Studio 문자 집합 정리〉, 《티스토리》, 2015-03-04
- 김종민 기자, 〈(MHN IT) 가장 인기 많은 프로그래밍 언어는? 자바-파이썬-자바스크립트 비교 분석〉, 《문화뉴스》, 2020-12-16
같이 보기