์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ์ค‘๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ˆจ๊ฒจ์ง„ ์œ„ํ—˜: ์ •์  ์ฝ”๋“œ ๋ถ„์„์ด ์ค‘์š”ํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ โ€‹โ€‹๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ, ํ…Œ์ŠคํŠธ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ณต์žกํ•œ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž์กฐ์ฐจ๋„ ๊ธฐ๋Šฅ, ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ์„ ์†์ƒ์‹œํ‚ค๋Š” ์˜ค๋ฅ˜๋ฅผ ๋„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์„ฑ๊นŒ์ง€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋””๋ฒ„๊น…, ์‹œ์Šคํ…œ ์˜ค๋ฅ˜ ๋˜๋Š” ๋ณด์•ˆ ์นจํ•ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜๋™ ์ฝ”๋“œ ๊ฒ€ํ† ๋Š” ์ข…์ข… โ€‹โ€‹์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ  ์ธ๊ฐ„์˜ ๊ฐ๋…์„ ๋ฐ›๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™ํ™”๋œ ์†”๋ฃจ์…˜์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„(SCA)์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์˜ค๋ฅ˜๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. SCA ๋„๊ตฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜, ๋…ผ๋ฆฌ์  ๊ฒฐํ•จ, ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ๋™์‹œ์„ฑ ๋ฌธ์ œ ๋ฐ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒฐํ•จ์„ ํฌํ•จํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์˜ˆ๋ฐฉ์  ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ์•ˆ์ •์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ  ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‹œํ–‰ํ•˜๋ฉฐ ์—…๊ณ„ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” SCA๊ฐ€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์˜ค๋ฅ˜์™€ SMART TS XL ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ๊ณผ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ฐจ๋ก€

๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ดˆ๊ธฐ์— ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฒƒ์˜ ์ค‘์š”์„ฑ

๋ฒ„๊ทธ๋ฅผ ์ผ์ฐ ๋ฐœ๊ฒฌํ• ์ˆ˜๋ก ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„, ์ด์ƒ์ ์œผ๋กœ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ๋‚˜์ค‘์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์ฃผ์š” ๋ฌธ์ œ๋กœ ์ปค์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฌ๋ฌธ ์˜ค๋ฅ˜, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ๋™์‹œ์„ฑ ๋ฌธ์ œ์™€ ๊ฐ™์€ ํŠน์ • ๋ฒ„๊ทธ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ด‘๋ฒ”์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ ํ›„์—์•ผ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Java์—์„œ null ๊ฒ€์‚ฌ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”๋ณต์‚ฌpublic class UserProfile {
    public String getUserName(String userId) {
        return userId.toUpperCase();  // NullPointerException if userId is null
    }
}

UserProfile profile = new UserProfile();
System.out.println(profile.getUserName(null));

์ด ๊ฒฝ์šฐ null ๊ฒ€์‚ฌ๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. NullPointerException ์‹คํ–‰ ์‹œ. ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ์ด ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ํ‘œ์‹œํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ๋„ ์ „์— ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ •์  ๋ถ„์„์„ ํ†ตํ•œ ์กฐ๊ธฐ ๊ฐ์ง€๋Š” ๋‚˜์ค‘์— ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ค์šด ์ˆจ๊ฒจ์ง„ ๋ฒ„๊ทธ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์‹œ์„ฑ ๋ฒ„๊ทธ๋Š” ์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ ์ค‘์—๋Š” ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ์ด ํ™•์žฅ๋˜๊ฑฐ๋‚˜ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์‹คํ–‰๋  ๋•Œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ์‹๋ณ„ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•ˆ์ „ํ•œ ๋™๊ธฐํ™” ํŒจํ„ด๊ณผ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฏธ๋ž˜์˜ ํ˜ผ๋ž€์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์—์„œ ๊ฐ„๋‹จํ•œ ๋ˆ„๋ฝ๋œ ์ฒดํฌ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ๋ˆ„์ ๋œ ๋Œ€๊ทœ๋ชจ ๋‹ค์ธต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ค๋ฅ˜๋ฅผ ํ‘ธ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋œ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธฐ ์˜ค๋ฅ˜ ๊ฐ์ง€๋Š” ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋” ๊น”๋”ํ•˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋ฐ ๋น„์šฉ ์ ˆ๊ฐ

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ โ€‹โ€‹๋ฐ˜๋ณต์ ์ธ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ, ๊ฐ ๋ฐ˜๋ณต์€ ๊ณ ์œ ํ•œ ์ผ๋ จ์˜ ๊ณผ์ œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ํฐ ์œ„ํ—˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋ ์ˆ˜๋ก ์ˆ˜์ • ๋น„์šฉ์ด ๋” ๋งŽ์ด ๋“ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฐœ๊ฒฌ๋œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋Š” ์ข…์ข… ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์ตœ์†Œํ•œ์˜ ์‹œ๊ฐ„๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ํ›„๋ฐ˜์ด๋‚˜ ๋ฐฐํฌ ํ›„์—์•ผ ์‹๋ณ„๋˜๋Š” ๊ฒฝ์šฐ, ํŠนํžˆ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๊ทธ ์‚ฌ์ด์— ์ƒ๋‹นํžˆ ์ง„ํ™”ํ•œ ๊ฒฝ์šฐ ์ง„๋‹จ, ํŒจ์น˜ ๋ฐ ํ…Œ์ŠคํŠธ์— ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Python์œผ๋กœ ๊ตฌ์ถ•๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ๋ณต์‚ฌimport sqlite3

def fetch_data():
    connection = sqlite3.connect('data.db')
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM large_table")  # Inefficient, fetches unnecessary data
    data = cursor.fetchall()
    connection.close()
    return data

๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์ฐ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌ๋œ ํ›„์—์•ผ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์ด ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์ด ์ƒ๋‹นํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๋Œ€๋Œ€์ ์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋น„ํšจ์œจ์„ฑ์„ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ๊ด€๋ จ ์—ด๋งŒ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํŽ˜์ด์ง€ ๋งค๊น€์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒ€์ƒ‰๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๋“ฑ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ์ตœ์ ํ™”๋ฅผ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ฉด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์žฌ์„ค๊ณ„๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐฐํฌ ํ›„์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋น„ํšจ์œจ์„ฑ์„ ์ผ์ฐ ํฌ์ฐฉํ•จ์œผ๋กœ์จ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ˆ„์ ๋œ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋””๋ฒ„๊น… ๋ฐ ํŒจ์น˜ ๋ฌธ์ œ์— ์†Œ์š”๋˜๋Š” ์ „์ฒด ์‹œ๊ฐ„์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ถœ์‹œ๋œ ํ›„ ํ•ซํ”ฝ์Šค๋‚˜ ๊ธด๊ธ‰ ํŒจ์น˜๊ฐ€ ์ค„์–ด๋“ค์–ด ๊ณ ๊ฐ ์ง€์› ๋ฐ ์šด์˜ ๋น„์šฉ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด์˜ ์•ˆ์ •์„ฑ์ด ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋ณด์žฅ๋˜๋ฉด ํŒ€์€ ํƒ€์ž„๋ผ์ธ์„ ๋” ์ž˜ ์˜ˆ์ธกํ•˜๊ณ , ๋ฒ”์œ„ ์ฆ๊ฐ€๋ฅผ ์ค„์ด๊ณ , ๋งˆ๊ฐ์ผ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งž์ถœ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ์— ๋งž์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ ํ–ฅ์ƒ

์ฝ”๋“œ ํ’ˆ์งˆ์€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ ์ข…์ข… ๊ฐ„๊ณผ๋˜๋Š” ์ธก๋ฉด์ด์ง€๋งŒ, ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์— ์žฅ๊ธฐ์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ์ผ์ฐ ๊ฐ์ง€ํ•˜๋ฉด ๋ฒ„๊ทธ๊ฐ€ ํ™•๋Œ€๋˜๊ธฐ ์ „์— ์ˆ˜์ •๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ์˜ ์ „๋ฐ˜์ ์ธ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋Š” ๊น”๋”ํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์™€ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๊ณ , ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์žฅ๊ธฐ์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ •์„ ํ”ผํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„ํšจ์œจ์ ์ด๊ฑฐ๋‚˜ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋Š” ๋‚˜์ค‘์— ์ˆ˜์ •, ๋””๋ฒ„๊น… ๋˜๋Š” ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript ํ”„๋กœ์ ํŠธ์—์„œ ์ ์ ˆํ•œ ์ถ”์ƒํ™” ์—†์ด ๋ฃจํ”„๋‚˜ ๋ณต์žกํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณต์‚ฌfunction findMax(arr) {
    let max = arr[0];
    for (let i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}

์œ„์˜ ํ•จ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ, ๋” ๊ฐ„์†Œํ™”๋˜๊ฑฐ๋‚˜ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ์— ์˜ํ•ด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ๋‚ด์žฅ ํ•จ์ˆ˜๋‚˜ ๋” ํ˜„๋Œ€์ ์ธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Math.max(...arr). ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์ฐ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋‚˜์ค‘์— ๋ฆฌํŒฉํ† ๋ง์— ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์ฝ”๋“œ ์ค‘๋ณต, ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํฐ ํด๋ž˜์Šค์™€ ๊ฐ™์ด ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ํŒจํ„ด์„ ์‹๋ณ„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "์ฝ”๋“œ ๋ƒ„์ƒˆ"๋ฅผ ์ผ์ฐ ๊ฐ์ง€ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋” ๋ชจ๋“ˆํ™”๋˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•˜๊ฑฐ๋‚˜ ๋†’์€ ์‚ฌ์ดํด๋กœ๋งคํ‹ฑ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ์‹๋ณ„ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C++์˜ ์˜ˆ๋กœ, ํด๋ž˜์Šค์— ์ฑ…์ž„์ด ๋„ˆ๋ฌด ๋งŽ์•„ ๋ณต์žก์„ฑ์ด ๋†’์•„์ง€๋Š” ์ƒํ™ฉ์„ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”.

cpp๋ณต์‚ฌclass UserManager {
public:
    void addUser(string username) {
        // Add user to the database
    }
    void removeUser(string username) {
        // Remove user from the database
    }
    void updateUser(string username, string newInfo) {
        // Update user data
    }
    void logUserActivity(string username) {
        // Log user activity
    }
};

์ •์  ๋ถ„์„์€ ์ด ํด๋ž˜์Šค๊ฐ€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์œ„๋ฐ˜ํ•œ๋‹ค๊ณ  ํ‘œ์‹œํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์ฐ ํ•ด๊ฒฐํ•˜๋ฉด ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์Œ“์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ™•์žฅ๋จ์— ๋”ฐ๋ผ ๋ณด๋‹ค ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋”์šฑ์ด ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ๋ฌธ์„œ๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ์ผ์น˜ํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ฃผ์„์ด๋‚˜ ๋ฌธ์„œ๊ฐ€ ์—†๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ํ‘œ์‹œํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค๋ช…์„ ์ œ๊ณตํ•˜๊ณ  ํ–ฅํ›„ ๊ธฐ์—ฌ์ž๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๊ฐœ์„ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ๋ฌธ์„œํ™”๋œ ์ฝ”๋“œ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์— ์ค‘์š”ํ•˜๋ฉฐ, ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ํŒ€์ด๋‚˜ ์žฅ๊ธฐ ํ”„๋กœ์ ํŠธ์—์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„์œผ๋กœ ์–ด๋–ค ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์ฝ”๋“œ์˜ ์ž ์žฌ์  ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋‚˜ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•จ์œผ๋กœ์จ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์—์„œ ๋ณต์žกํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์˜ˆ๋ฐฉ์  ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ, ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ ๋ฐ ๋ณด์•ˆ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ์–ด๋–ค ๊ตฌ์ฒด์ ์ธ ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ์š”? ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ์˜ค๋ฅ˜

๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ• ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ปดํŒŒ์ผํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ์ข…์ข… ๊ตฌ๋‘์  ๋ˆ„๋ฝ, ์ž˜๋ชป๋œ ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ๋˜๋Š” ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ด„ํ˜ธ์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์‹ค์ˆ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ •์  ์ฝ”๋“œ ๋ถ„์„์—์„œ ๊ฐ์ง€ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„๊นŒ์ง€ ์•Œ์•„์ฐจ๋ฆฌ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋Š” ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜์™€ ๋‹ฌ๋ฆฌ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋Š” ์‹คํ–‰์„ ์™„์ „ํžˆ ๋ฐฉํ•ดํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ด๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๊ทœ์น™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์™€ ๊ทธ ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊นจ๋—ํ•˜๊ณ  ์˜ค๋ฅ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ๋ถ„์„์—์„œ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ธ๋ฏธ์ฝœ๋ก ์ด ์—†์Šต๋‹ˆ๋‹ค

์„ธ๋ฏธ์ฝœ๋ก ์ด ๋ˆ„๋ฝ๋œ ๊ฒƒ์€ ์„ธ๋ฏธ์ฝœ๋ก ์ด ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๊ฐ€์žฅ ํ”ํ•œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. C, ์ž๋ฐ”, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ. ์„ธ๋ฏธ์ฝœ๋ก ์€ ๋ฌธ์žฅ์˜ ๋์„ ํ‘œ์‹œํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์ ์ ˆํžˆ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฌธ์žฅ์ด ๋๋‚˜๋Š” ๊ณณ์„ ์ž˜๋ชป ํ•ด์„ํ•˜์—ฌ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘, ๊ฒฝ๊ณ  ๋˜๋Š” ์™„์ „ํ•œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์–ธ์–ด์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

  • C / C ++: C์™€ C++์—์„œ ๋ชจ๋“  ๋ฌธ์žฅ์€ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž๋ฐ”: Java๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น๋ฌธ์—์„œ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜๋ฉฐ ํ•˜๋‚˜๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ์˜ค๋ฅ˜.
  • JavaScript: JavaScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฝ์ž…(ASI)์ด ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๋ฉด ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ์˜๋„์น˜ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ ๋ฐ ์˜ค๋ฅ˜

C++ ์˜ˆ์ œ(์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ ์˜ค๋ฅ˜)
cpp๋ณต์‚ฌํŽธ์ง‘#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!"  // Missing semicolon
    return 0;
}

์˜ค๋ฅ˜ ์ถœ๋ ฅ:

์‰˜๋ณต์‚ฌํŽธ์ง‘error: expected ';' before 'return'

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;) ์ „์— return์ด๊ฒƒ์ด ์—†์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Java ์˜ˆ์ œ(์ปดํŒŒ์ผ ์˜ค๋ฅ˜)
์ž๋ฐ”๋ณต์‚ฌํŽธ์ง‘public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!") // Missing semicolon
    }
}

์˜ค๋ฅ˜ ์ถœ๋ ฅ:

์‰˜๋ณต์‚ฌํŽธ์ง‘error: ';' expected

Java์—์„œ๋Š” ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜๋ฉฐ, ์ด๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

JavaScript ์˜ˆ์ œ(์„ธ๋ฏธ์ฝœ๋ก  ์—†์ด๋Š” ์ž ์žฌ์ ์ธ ํ•จ์ •)
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณต์‚ฌํŽธ์ง‘function test() {
    return 
    5 + 1;
}
console.log(test());

์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ถœ๋ ฅ:

์‰˜๋ณต์‚ฌํŽธ์ง‘undefined

JavaScript๋Š” ์ž๋™์œผ๋กœ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. return, ํ•จ์ˆ˜๋Š” ํ‰๊ฐ€ ์ „์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. 5 + 1. ์ด๋Ÿฌํ•œ ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์œผ๋กœ ์ธํ•ด ๋ฏธ๋ฌ˜ํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด„ํ˜ธ/๋Œ€๊ด„ํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€๊ด„ํ˜ธ์™€ ๊ด„ํ˜ธ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ฝ”๋“œ ๋ธ”๋ก, ํ•จ์ˆ˜ ์ธ์ˆ˜ ๋ฐ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜, ์ž˜๋ชป ์ค‘์ฒฉ๋˜์—ˆ๊ฑฐ๋‚˜, ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ฝ”๋“œ์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ์กฐ๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์—†์–ด ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ด„ํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ

  • ๋‹ซํžˆ์ง€ ์•Š์€ ๊ด„ํ˜ธ: ๋‹ซ๋Š” ๊ฒƒ์„ ์žŠ์–ด๋ฒ„๋ฆผ {}, []๋ฐ () ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ์ค‘์ฒฉ: ๊ด„ํ˜ธ๋ฅผ ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ๋‹ซ์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋…ผ๋ฆฌ๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ๊ด„ํ˜ธ: ๊ด„ํ˜ธ๋ฅผ ์ž˜๋ชป ๋„ฃ์œผ๋ฉด ํ‘œํ˜„์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ๊ทธ๋ฃนํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž˜๋ชป๋œ ํ‚ค์›Œ๋“œ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ๋ช…๋ น์ด๋‚˜ ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์•ฝ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด(์ฒ ์ž๊ฐ€ ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์˜๋„์น˜ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ) ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ํ‚ค์›Œ๋“œ๋กœ ์ธํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ
  • ์ฒ ์ž๊ฐ€ ํ‹€๋ฆฐ ํ‚ค์›Œ๋“œ: ์‚ฌ์šฉ fuction ๋Œ€์‹  function JavaScript์—์„œ.
  • ์˜ˆ์•ฝ์–ด์˜ ์˜ค์šฉ: ์‚ฌ์šฉ class Java์—์„œ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ.
  • ์ž˜๋ชป๋œ ํ‚ค์›Œ๋“œ ๋ฐฐ์น˜: ๊ธ€์“ฐ๊ธฐ return Python ํ•จ์ˆ˜ ๋ฐ–์—์„œ.
 

์œ ํ˜• ์˜ค๋ฅ˜

์œ ํ˜• ์˜ค๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๋ณ€์ˆ˜๊ฐ€ ์˜ˆ์ƒ ์œ ํ˜•์˜ ๊ฐ’์„ ์œ ์ง€ํ•˜๋„๋ก ์—„๊ฒฉํ•œ ์œ ํ˜• ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜๋ฉด ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ๋Ÿฐํƒ€์ž„ ์ „์— ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์ž ์žฌ์ ์ธ ์ถฉ๋Œ์ด๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ˜• ์˜ค๋ฅ˜๋Š” ์ข…์ข… ์œ ํ˜• ๋ถˆ์ผ์น˜, ์•”๋ฌต์  ์œ ํ˜• ๋ณ€ํ™˜ ๋˜๋Š” ์ž˜๋ชป๋œ ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •์  ์œ ํ˜• ์–ธ์–ด์—์„œ ํ”ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”, C++, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, ๊ทธ๋Ÿฌ๋‚˜ ๋™์ ์œผ๋กœ ์ž…๋ ฅ๋˜๋Š” ์–ธ์–ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ํ–ฅ์„๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„์—์„œ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์œ ํ˜• ๊ด€๋ จ ์˜ค๋ฅ˜ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์œ ํ˜• ๋ถˆ์ผ์น˜

A ์œ ํ˜• ๋ถˆ์ผ์น˜ ๋ณ€์ˆ˜์— ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์œ ํ˜•์˜ ๊ฐ’์ด ํ• ๋‹น๋˜๊ฑฐ๋‚˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜• ๊ฐ„์— ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ •์  ์œ ํ˜• ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ˜๋ฉด, ๋™์  ์œ ํ˜• ์–ธ์–ด๋Š” ๋Ÿฐํƒ€์ž„์—๋งŒ ์ด๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํ˜• ๋ถˆ์ผ์น˜์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ์ •์ˆ˜๋ฅผ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ).
  • ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์œ ํ˜•์— ๋Œ€ํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ž˜๋ชป๋œ ์œ ํ˜•์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

C++์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ์•”๋ฌต์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•”์‹œ์  ์œ ํ˜• ๋ณ€ํ™˜(ํ˜•์‹ ๊ฐ•์ œ ๋ณ€ํ™˜ ๋ฌธ์ œ)

์•”์‹œ์  ํ˜•์‹ ๋ณ€ํ™˜ ๋˜๋Š” ์œ ํ˜• ๊ฐ•์ œ, ์–ธ์–ด๊ฐ€ ์ž‘์—… ์ค‘์— ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์œ ์šฉํ•˜์ง€๋งŒ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ์œ ํ˜• ์–ธ์–ด์™€ ๊ฐ™์€ C++์™€ ์ž๋ฐ” ์—„๊ฒฉํ•œ ์œ ํ˜• ๋ณ€ํ™˜ ๊ทœ์น™์ด ์žˆ๋Š” ๋ฐ˜๋ฉด, ๋™์  ์œ ํ˜• ์–ธ์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์•”์‹œ์  ์œ ํ˜• ๋ณ€ํ™˜์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ
  • ์ˆซ์ž์—์„œ ๋ฌธ์ž์—ด๋กœ์˜ ์˜๋„์น˜ ์•Š์€ ๋ณ€ํ™˜ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ.
  • ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์ •๋ฐ€๋„๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
  • ํ˜•์‹ ๊ฐ•์ œ ๋ณ€ํ™˜์œผ๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ถ€์šธ ๊ณ„์‚ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

C++์—์„œ๋Š” ์•”๋ฌต์  ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ž˜๋ผ๋‚ด๋‹ค ์‚ฌ์ „ ๊ฒฝ๊ณ  ์—†์ด ์†Œ์ˆ˜์ ์„ ์ž…๋ ฅํ•˜๋ฉด ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๊ธฐ๋Šฅ ์„œ๋ช…

ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฐ˜ํ™˜ ์œ ํ˜•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์ž˜๋ชป๋œ ์ธ์ˆ˜(์ž˜๋ชป๋œ ์œ ํ˜•, ์ˆซ์ž ๋˜๋Š” ์ˆœ์„œ)๋กœ ํ˜ธ์ถœ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ •์  ์œ ํ˜• ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, ๋™์  ์œ ํ˜• ์–ธ์–ด๋Š” ๋Ÿฐํƒ€์ž„์—๋งŒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ํ•จ์ˆ˜ ์„œ๋ช…์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ
  • ์ž˜๋ชป๋œ ์ธ์ˆ˜ ์œ ํ˜•์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์ ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ๋ฐ˜ํ™˜ ์œ ํ˜•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

C++์—์„œ๋Š” ํ•จ์ˆ˜ ์ธ์ˆ˜์— ๋Œ€ํ•ด ์—„๊ฒฉํ•œ ์œ ํ˜• ์ผ์น˜๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜

๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ปดํŒŒ์ผ๋˜๊ณ  ์‹คํ–‰๋˜์ง€๋งŒ ์ž˜๋ชป๋œ ๋…ผ๋ฆฌ๋กœ ์ธํ•ด ์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋˜๋Š” ์œ ํ˜• ์˜ค๋ฅ˜์™€ ๋‹ฌ๋ฆฌ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋Š” ์ฆ‰๊ฐ์ ์ธ ์‹คํŒจ๋‚˜ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํŠน์ • ์กฐ๊ฑด์ด ๊ฒฐํ•จ์„ ํŠธ๋ฆฌ๊ฑฐํ•  ๋•Œ๊นŒ์ง€ ์•Œ์•„์ฐจ๋ฆฌ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ์ž˜๋ชป๋œ ๊ณ„์‚ฐ, ๋ฌดํ•œ ๋ฃจํ”„, ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ ๋˜๋Š” ๋น„ํšจ์œจ์ ์ธ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋Š” ์ปดํŒŒ์ผ ๋˜๋Š” ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํƒ์ง€ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ์ค‘๋ณต ์กฐ๊ฑด, ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋กœ ํ‰๊ฐ€๋˜๋Š” ์—ฐ์‚ฐ๊ณผ ๊ฐ™์ด ์ž ์žฌ์ ์ธ ๋…ผ๋ฆฌ์  ๊ฒฐํ•จ์„ ์‹œ์‚ฌํ•˜๋Š” ํŒจํ„ด์„ ์‹๋ณ„ํ•˜์—ฌ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ๋ถ„์„์—์„œ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ

๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋Š” ์‹คํ–‰์„ ๋ฐฉํ•ดํ•˜๋Š” ์„ ํ–‰ ๋…ผ๋ฆฌ๋กœ ์ธํ•ด ์‹คํ–‰๋  ์ˆ˜ ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋ถ€๋ถ„์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ข…์ข… ์ž˜๋ชป๋œ ๋ฐ˜ํ™˜ ๋ฌธ, ์ž˜๋ชป๋œ ์กฐ๊ฑด ๊ฒ€์‚ฌ ๋˜๋Š” ๋ฃจํ”„์˜ ๋ถˆํ•„์š”ํ•œ ์ค‘๋‹จ์ ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฌดํ•œ ๋ฃจํ”„

๋ฌดํ•œ ๋ฃจํ”„๋Š” ์ž˜๋ชป๋œ ๋ฃจํ”„ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ๋ฃจํ”„๊ฐ€ ๋ฌดํ•œํžˆ ๊ณ„์† ์‹คํ–‰๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ณผ๋„ํ•œ CPU ์‚ฌ์šฉ, ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋“œ ์ฝ”๋“œ

๋ฐ๋“œ ์ฝ”๋“œ๋Š” ์กด์žฌํ•˜์ง€๋งŒ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ ์„น์…˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ œ์–ด ํ๋ฆ„์— ์˜ํ•ด ์ฐจ๋‹จ๋œ ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ์™€ ๋‹ฌ๋ฆฌ ๋ฐ๋“œ ์ฝ”๋“œ๋Š” ๋ ˆ๊ฑฐ์‹œ ๊ตฌํ˜„, ๋ฆฌํŒฉํ† ๋ง ๋ฌธ์ œ ๋˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜๋กœ ์ธํ•ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋“œ ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜.
  • ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์กฐ๊ฑด๋ถ€ ๋ถ„๊ธฐ์ž…๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ฃจํ”„ ์กฐ๊ฑด

์ž˜๋ชป๋œ ๋ฃจํ”„ ์กฐ๊ฑด์€ ๋ฐ˜๋ณต์„ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜, ํ•„์š” ์ด์ƒ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ์ „ํ˜€ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋“ฑ ์˜๋„์น˜ ์•Š์€ ๋™์ž‘์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์„ฑ๋Šฅ ๋น„ํšจ์œจ์„ฑ, ์ž˜๋ชป๋œ ๊ณ„์‚ฐ ๋˜๋Š” ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ฃจํ”„ ์กฐ๊ฑด์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ์‚ฌ์šฉ <= ๋Œ€์‹  <, ํ˜น์€ ๊ทธ ๋ฐ˜๋Œ€๋กœ๋„.
  • ์กฐ๊ฑด์—์„œ ์ž˜๋ชป๋œ ๋ณ€์ˆ˜๋ฅผ ๋น„๊ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฃจํ”„ ์ œ์–ด ๋ณ€์ˆ˜๋ฅผ ์ž˜๋ชป ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ์ทจ์•ฝ์ 

๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์•…์˜์  ๊ณต๊ฒฉ, ๋ฐ์ดํ„ฐ ์นจํ•ด ๋˜๋Š” ๋ฌด๋‹จ ์•ก์„ธ์Šค์— ๋…ธ์ถœ์‹œํ‚ค๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ค‘๋Œ€ํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์„ฑ์€ ์ข…์ข… ์ž˜๋ชป๋œ ์ฝ”๋”ฉ ๊ด€ํ–‰, ๋ถ€์ ์ ˆํ•œ ์ž…๋ ฅ ๊ฒ€์ฆ ๋˜๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์˜ ์ž˜๋ชป๋œ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋˜๋Š” ๋…ผ๋ฆฌ ์˜ค๋ฅ˜์™€ ๋‹ฌ๋ฆฌ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์€ ๋ฐ˜๋“œ์‹œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์ค‘๋‹จ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋Œ€์‹  ์•…์šฉ์— ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„์€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ดˆ๊ธฐ์— ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„๊ธฐ๋Š” ์•Œ๋ ค์ง„ ๋ณด์•ˆ ๊ฒฐํ•จ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ SQL ์ฃผ์ž…, ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…(XSS), ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ, ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•”ํ˜ธํ™” ๊ด€ํ–‰ ๋ฐ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋น„๋ฐ€๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์œ„ํ˜‘์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์„ฑ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SQL ์ฃผ์ž…

SQL ์ฃผ์ž…(SQLi)์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ํ†ตํ•ด ์•…์„ฑ SQL ์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค๊ณต๊ฒฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ค‘์š”ํ•œ ์ •๋ณด์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์•ก์„ธ์Šค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL ์ฃผ์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ SQL ์ฟผ๋ฆฌ์— ์ง์ ‘ ์—ฐ๊ฒฐ
  • ์ค€๋น„๋œ ๋ฌธ์žฅ์ด๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ
  • ์–‘์‹, URL ๋˜๋Š” ์ฟ ํ‚ค์—์„œ ํ™•์ธ๋˜์ง€ ์•Š์€ ์ž…๋ ฅ ํ—ˆ์šฉ

์‚ฌ์ดํŠธ ๊ฐ„ ์Šคํฌ๋ฆฝํŒ… (XSS)

ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…(XSS)์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ํ”ผํ•ด์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ JavaScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ธ์…˜ ํ•˜์ด์žฌํ‚น, ๋ฐ์ดํ„ฐ ๋„๋‚œ ๋ฐ ํ”ผ์‹ฑ ๊ณต๊ฒฉ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XSS์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ์ถœ๋ ฅ ์ค‘ ๊ฒ€์—ด๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ HTML๋กœ ์ง์ ‘
  • JavaScript ์‹คํ–‰ ํ—ˆ์šฉ ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์ฝ˜ํ…์ธ 
  • ์ž…๋ ฅ ํ•„๋“œ์—์„œ ํŠน์ˆ˜๋ฌธ์ž์˜ ๋ถ€์ ์ ˆํ•œ ์ด์Šค์ผ€์ดํ”„

 

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฒ„ํผ(๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜, ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ๊ถŒํ•œ์„ ์ƒ์Šน์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์ด์œ  ๋ฐœ์ƒ:

  • ๊ณ ์ • ํฌ๊ธฐ ๋ฒ„ํผ ์‚ฌ์šฉ ์ž…๋ ฅ ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ 
  • ์ž…๋ ฅ ๊ฒฝ๊ณ„ ๊ฒ€์ฆ ์‹คํŒจ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ
  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜ ์‚ฌ์šฉ ์ฒ˜๋Ÿผ gets(), strcpy()๊ธ€๋ Œ๋ฐ์ผ sprintf() C/C++๋กœ

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•”ํ˜ธํ™”

์•ฝํ•˜๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณดํ˜ธ๋œ ์ •๋ณด๋ฅผ ํ•ด๋…, ์ˆ˜์ • ๋˜๋Š” ์œ„์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ๊ด€ํ–‰์ด ๋ถ€์กฑํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์นจํ•ด, ์ธ์ฆ ์ค‘๋‹จ ๋ฐ ํ†ต์‹  ๋ณด์•ˆ์ด ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•”ํ˜ธํ™” ์ด์œ 

  • ์˜ค๋ž˜๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ (์˜ˆ: MD5, SHA-1, DES)
  • ํ•˜๋“œ์ฝ”๋”ฉ ์•”ํ˜ธํ™” ํ‚ค ์†Œ์Šค ์ฝ”๋“œ์—์„œ
  • ์ ์ ˆํ•œ ์•”ํ˜ธํ™” ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ (์˜ˆ: AES์˜ ECB ๋ชจ๋“œ)

 

ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋น„๋ฐ€

์†Œ์Šค ์ฝ”๋“œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ, API ํ‚ค, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช… ๋˜๋Š” ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์€ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์œ„ํ—˜์ž…๋‹ˆ๋‹ค. ๋…ธ์ถœ๋˜๋ฉด ๊ณต๊ฒฉ์ž๋Š” ์‹œ์Šคํ…œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ API์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์•ก์„ธ์Šค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋น„๋ฐ€์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋Œ€์‹  ์†Œ์Šค ํŒŒ์ผ์— ์ž๊ฒฉ ์ฆ๋ช… ์ €์žฅ
  • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋ฒ„์ „ ์ œ์–ด(์˜ˆ: GitHub)์— ์ปค๋ฐ‹
  • ํ”„๋ŸฐํŠธ์—”๋“œ JavaScript ์ฝ”๋“œ์— API ํ‚ค๋ฅผ ์ง์ ‘ ์ž„๋ฒ ๋“œ

 

๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์€ ๋ฌด๋‹จ ์•ก์„ธ์Šค์—์„œ ์ „์ฒด ์‹œ์Šคํ…œ ์†์ƒ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ฌ๊ฐํ•œ ์œ„ํ˜‘์— ๋…ธ์ถœ์‹œํ‚ต๋‹ˆ๋‹ค. ์•ˆ์ „ํ•œ ์ฝ”๋”ฉ ๊ด€ํ–‰๊ณผ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•…์˜์  ์•…์šฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์˜ค๋ฅ˜

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์˜ค๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ํ• ๋‹น, ์•ก์„ธ์Šค ๋˜๋Š” ํ• ๋‹น ํ•ด์ œํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ์ถฉ๋Œ, ์„ฑ๋Šฅ ์ €ํ•˜ ๋˜๋Š” ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ๊ณผ ๊ฐ™์€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C ๋ฐ C++์™€ ๊ฐ™์ด ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์–ธ์–ด๋Š” ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ๋ฐ˜๋ฉด Java, Python ๋ฐ C#๊ณผ ๊ฐ™์€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์–ธ์–ด๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ ์™„ํ™”ํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๋ฉด์—ญ์ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ๋˜๋Š”์ง€ ๋ถ„์„ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„์—์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์ง€๋งŒ ๊ฒฐ์ฝ” ํ•ด์ œํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ ๊ฐˆ๋˜์–ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์ด ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ์„œ๋ฒ„๋‚˜ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์žฅ๊ธฐ ์‹คํ–‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŠนํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋กœ ์ธํ•ด

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น malloc() or new ์ „ํ™”ํ•˜์ง€ ์•Š๊ณ  free() or delete.
  • ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์–ธ์–ด์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ํ•ธ๋“ค, ์†Œ์ผ“ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ๋‹ซ๋Š” ๊ฒƒ์„ ์žŠ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

๋งค๋‹ฌ๋ฆฐ ํฌ์ธํ„ฐ

dangling ํฌ์ธํ„ฐ๋Š” ์ด๋ฏธ ํ• ๋‹น ํ•ด์ œ๋˜๊ฑฐ๋‚˜ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ์ธํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋ฉด ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘, ์ถฉ๋Œ ๋˜๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Dangling Pointer๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ 

  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€๋งŒ ํฌ์ธํ„ฐ๋Š” ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜์—์„œ ๋กœ์ปฌ ์Šคํƒ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํ• ๋‹น ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

๋”๋ธ” ํ”„๋ฆฌ

A ๋”๋ธ” ๋ฌด๋ฃŒ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๋‘ ๋ฒˆ ์ด์ƒ ํ•ด์ œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์†์ƒ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ตฌ์กฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์•…์šฉ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํž™ ์†์ƒ ๊ณต๊ฒฉ.

Double Free ์˜ค๋ฅ˜์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ํ˜ธ์ถœ free() or delete ๊ฐ™์€ ํฌ์ธํ„ฐ์— ์—ฌ๋Ÿฌ ๋ฒˆ.
  • C++์—์„œ ๊ณต์œ  ์†Œ์œ ๊ถŒ์„ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ํ• ๋‹น ํ•ด์ œ๋ฅผ ์ž˜๋ชป ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ

A ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ •๋œ ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. NULL (๋˜๋Š” nullptr C++์—์„œ). ์ด๋Š” ๋‹ค์Œ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ์˜ค๋ฅ˜ or ๋Ÿฐํƒ€์ž„ ์ถฉ๋Œ.

๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ์˜ ์ผ๋ฐ˜์ ์ธ ์›์ธ

  • ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์Šต๋‹ˆ๋‹ค.
  • ํ™•์ธ์— ์‹คํŒจ NULL ์—ญ์ฐธ์กฐํ•˜๊ธฐ ์ „์—.
  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•˜๊ณ  ํฌ์ธํ„ฐ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

SMART TS XL ์˜ค๋ฅ˜ ๊ฐ์ง€๋ฅผ ์œ„ํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ์†”๋ฃจ์…˜์œผ๋กœ

SMART TS XL ํฌ๊ด„์ ์ด๋‹ค ์ •์  ์ฝ”๋“œ ๋ถ„์„(SCA) ๋„๊ตฌ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐฉ์ง€ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์‹คํ–‰์—†์ด์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ, ๋ณด์•ˆ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SMART TS XL ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฐ์—…์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ๋†’์€ ์‹ ๋ขฐ์„ฑ๊ณผ ๊ทœ์ • ์ค€์ˆ˜์˜ˆ๋ฅผ ๋“ค์–ด ๊ธˆ์œต, ์˜๋ฃŒ, ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋“ฑ์ž…๋‹ˆ๋‹ค.

์ด ๋„๊ตฌ๋Š” ํšจ์œจ์ ์œผ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค ๊ตฌ๋ฌธ ์˜ค๋ฅ˜, ์œ ํ˜• ๋ถˆ์ผ์น˜ ๋ฐ ๋…ผ๋ฆฌ ์˜ค๋ฅ˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ž˜๋ชป๋œ ์—ฐ์‚ฐ์ž, ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ๋ฅผ ํฌํ•จํ•œ SQL ์ฃผ์ž…, ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…(XSS) ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์ด๋ฒ„ ์œ„ํ˜‘์— ๊ฐ•ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, SMART TS XL ๊ด€๋ฆฌ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ ๋“ฑ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ์ด์ค‘ ํ•ด์ œC ๋ฐ C++ ๊ฐœ๋ฐœ์— ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๊ฐ์ง€๋ฅผ ๋„˜์–ด์„œ, SMART TS XL ๊ฐ•ํ™” ์ฝ”๋“œ ํ’ˆ์งˆ ํ”Œ๋ž˜๊น…์œผ๋กœ ์ค‘๋ณต, ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ๋…ผ๋ฆฌ, ๊ธด ํ•จ์ˆ˜, ๋” ๊นจ๋—ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฒฝํ•˜๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. CI/CD ํŒŒ์ดํ”„๋ผ์ธ, IDE ๋ฐ ๋ณด์•ˆ ์ค€์ˆ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋”ฐ๋ผ์„œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‹œํ–‰ํ•˜๊ณ  ๋†’์€ ์ฝ”๋“œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ ํŒ€์—๊ฒŒ ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๊ฐ์ง€์—์„œ ์ •์  ์ฝ”๋“œ ๋ถ„์„์˜ ์ค‘์š”์„ฑ

์ •์  ์ฝ”๋“œ ๋ถ„์„(SCA)์€ ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์ค‘์š”ํ•œ ๋„๊ตฌ๋กœ, ํŒ€์ด ๊ฐœ๋ฐœ ๋ผ์ดํ”„์‚ฌ์ดํด ์ดˆ๊ธฐ์— ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. SCA ๋„๊ตฌ๋Š” ์‹คํ–‰ ์—†์ด ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜, ์œ ํ˜• ๋ถˆ์ผ์น˜, ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜, ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฌธ์ œ, ๋™์‹œ์„ฑ ๋ฌธ์ œ, ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒฐํ•จ ๋“ฑ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์˜ค๋ฅ˜, ๋ณด์•ˆ ์นจํ•ด, ์„ฑ๋Šฅ ์ €ํ•˜, ์œ ์ง€ ๊ด€๋ฆฌ ๋น„์šฉ ์ฆ๊ฐ€๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SCA ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. SMART TS XL ์ž๋™ํ™”๋œ ์˜ค๋ฅ˜ ๊ฐ์ง€๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ ์•ˆ์ •์„ฑ, ๋ณด์•ˆ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‹œํ–‰ํ•˜๊ณ , ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ, ์—…๊ณ„ ํ‘œ์ค€ ์ค€์ˆ˜๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. CI/CD ํŒŒ์ดํ”„๋ผ์ธ, IDE ๋˜๋Š” ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ํ†ตํ•ด SCA๋ฅผ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ์กฐ์ง์€ ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๋ฉฐ, ์ „๋ฐ˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๋Œ€์— ์ •์  ์ฝ”๋“œ ๋ถ„์„์„ ํ†ตํ•œ ์‚ฌ์ „์  ์˜ค๋ฅ˜ ๊ฐ์ง€๋Š” ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ์ทจ์•ฝ์„ฑ์„ ํ•ด๊ฒฐํ•˜๋“  ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๋“  SCA๋Š” ๋ชจ๋“  ์‚ฐ์—…์—์„œ ๊ฒฌ๊ณ ํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.