한글에는 대소문자라는 구분이 없지만, 알파벳과 같은 서구권의 문자에는 대문자(큰글자)와 소문자(작은글자)라는 구분이 있다.
예를 들어, 영어의 경우 다음과 같이 큰 글자와 작은 글자의 구분이 있다.
대문자: | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
소문자: | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
대문자를 표현하는 영어 표현이 여러가지 있지만, Capital letter라는 표현이 일생 생활에서 자주 사용된다면, 프로그래밍에서는 주로 uppercase라는 표현을 주로 사용한다.
소문자 역시 Small letter라는 표현이 있지만, 프로그래밍에서는 lowercase라는 표현을 주로 사용한다.
대문자를 뜻하는 uppercase와 소문자를 뜻하는 lowercase가 모두 case라는 접미어를 가지고 있기 때문에, 프로그래밍에서는 case라는 말의 의미가 '대소문자'와 관련된 것이라는 의미가 있다.
우리가 일상생활에서는 A는 a와 같은 글자이므로 프로그래밍 과정에서도 무의식 중에 같은 것이라고 착각하게 되는 경우가 있다.
하지만 다음의 ASCII 표를 보자.
0000000 | NUL | 0100000 | Space | 1000000 | @ | 1100000 | ` |
0000001 | SOH (Start of Heading) | 0100001 | ! | 1000001 | A | 1100001 | a |
0000010 | STX (Start of Text) | 0100010 | “ | 1000010 | B | 1100010 | b |
0000011 | ETX (End of Text) | 0100011 | # | 1000011 | C | 1100011 | c |
0000100 | EOT (End of Transmission) | 0100100 | $ | 1000100 | D | 1100100 | d |
0000101 | ENQ (Enquiry) | 0100101 | % | 1000101 | E | 1100101 | e |
0000110 | ACK (Acknowledge) | 0100110 | & | 1000110 | F | 1100110 | f |
0000111 | BEL (Bell) | 0100111 | ‘ | 1000111 | G | 1100111 | g |
0001000 | BS (Backspace) | 0101000 | ( | 1001000 | H | 1101000 | h |
0001001 | HT (Horizontal Tabulation) | 0101001 | ) | 1001001 | I | 1101001 | i |
0001010 | LF (Line Feed) | 0101010 | * | 1001010 | J | 1101010 | j |
0001011 | VT (Vertical Tabulation) | 0101011 | + | 1001011 | K | 1101011 | k |
0001100 | FF (Form Feed) | 0101100 | , | 1001100 | L | 1101100 | l |
0001101 | CR (Carriage Return) | 0101101 | - | 1001101 | M | 1101101 | m |
0001110 | SO (Shift Out) | 0101110 | . | 1001110 | N | 1101110 | n |
0001111 | SI (Shift In) | 0101111 | / | 1001111 | O | 1101111 | o |
0010000 | DLE (Data Link Escape) | 0110000 | 0 | 1010000 | P | 1110000 | p |
0010001 | DC1 (Device Control 1) | 0110001 | 1 | 1010001 | Q | 1110001 | q |
0010010 | DC2 (Device Control 2) | 0110010 | 2 | 1010010 | R | 1110010 | r |
0010011 | DC3 (Device Control 3) | 0110011 | 3 | 1010011 | S | 1110011 | s |
0010100 | DC4 (Device Control 4) | 0110100 | 4 | 1010100 | T | 1110100 | t |
0010101 | NAK (Negative Acknowledge) | 0110101 | 5 | 1010101 | U | 1110101 | u |
0010110 | SYN (Synchronous Idle) | 0110110 | 6 | 1010110 | V | 1110110 | v |
0010111 | ETB (End of Transmission Block) | 0110111 | 7 | 1010111 | W | 1110111 | w |
0011000 | CAN (Cancel) | 0111000 | 8 | 1011000 | X | 1111000 | x |
0011001 | EM (End of Medium) | 0111001 | 9 | 1011001 | Y | 1111001 | y |
0011010 | SUB (Substitute) | 0111010 | : | 1011010 | Z | 1111010 | z |
0011011 | ESC (Escape) | 0111011 | ; | 1011011 | [ | 1111011 | { |
0011100 | FS (File Separator) | 0111100 | < | 1011100 | \ | 1111100 | | |
0011101 | GS (Group Separator) | 0111101 | = | 1011101 | ] | 1111101 | } |
0011110 | RS (Record Separator) | 0111110 | > | 1011110 | ^ | 1111110 | ~ |
0011111 | US (Unit Separator) | 0111111 | ? | 1011111 | _ | 1111111 | DEL |
A는 1000001, a는 1100001에 할당되어 있다.
그러면 당연히 프로그래밍 중에는 A와 a는 다른 문자라고 보아야 할것이다.
이렇게 A와 a를 다른 문자로 보는 경우를 case-sensitive(대소문자에 민감한; 대소문자에 구분이 있는) 라고 한다.
하지만 사람들이 A와 a를 같은 문자로 판단해 발생하는 오류를 줄이기 위해 A와 a를 같은 값으로 인식시키도록 처리되어 있는 경우를 case-insensitive(대소문자에 민감하지 않은; 대소문자에 구분이 없는) 라고 한다.
프로그래밍에서 이 부분은 상당히 민감한 문제이다.
프로그래밍 언어의 차이에 따라 단지 대소문자의 차이인데 같은 변수나 함수로 인식하는 경우가 다른 경우가 있다.
카멜케이스
케밥케이스
스네이크케이스
'프로그래밍 일반' 카테고리의 다른 글
SSR(Server Side Rendering)이란 무엇인가? (0) | 2021.06.28 |
---|---|
RFC(Request for Comments)란 무엇일까? (0) | 2021.06.25 |
JSON Web Token (JWT) 이란 무엇일까? (0) | 2021.06.25 |
인터넷이 안되는 환경에서 이클립스 플러그인 설치하기 (0) | 2021.06.18 |
인터넷이 안되는 환경에서 이클립스 설치하기 (0) | 2021.06.17 |