πŸ–₯️ Semantics: ꡬ문과 의미둠 κ΄€μ μ—μ„œ

Jaehyun ParkΒ·2025λ…„ 2μ›” 22일
0

Semantics

"semantic"μ΄λΌλŠ” λ‹¨μ–΄μ˜ 의미λ₯Ό 찾아보면 λ‹€μŒκ³Ό 같은 μ •μ˜κ°€ μžˆλ‹€.

μ˜λ―Έλ‘ μ€ 언어적 의미λ₯Ό μ—°κ΅¬ν•˜λŠ” ν•™λ¬Έμž…λ‹ˆλ‹€. μ˜λ―Έκ°€ 무엇인지, 단어가 μ–΄λ–»κ²Œ 의미λ₯Ό μ–»λŠ”μ§€, λ³΅μž‘ν•œ ν‘œν˜„μ˜ μ˜λ―Έκ°€ 뢀뢄에 따라 μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”μ§€ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. (μœ„ν‚€λ°±κ³Ό)

"의미둠적인"μ΄λΌλŠ” λœ»μ„ κ°€μ§€λ©°, ν”„λ‘œκ·Έλž˜λ°μ—μ„œ semanticμ΄λž€ "μ½”λ“œ μ‘°κ°λ“€μ˜ 의미"λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
ν”„λ‘œκ·Έλž˜λ°μ—μ„œ κ°€μ§€λŠ” "의미"의 μ˜λ―ΈλŠ” μ •ν™•νžˆ μ–΄λ–€ κ²ƒμΌκΉŒ?

μ½”λ“œμ˜ 의미

λ‹€μŒκ³Ό 같이 λ™μΌν•œ λ™μž‘μ„ ν•˜λŠ” 두 개의 μ½”λ“œκ°€ μžˆλ‹€κ³  ν•΄λ³΄μž.

let a = 1 + 2;
console.log(a);
let sum = add(1, 2);
console.log(sum);

이 두 개의 μ½”λ“œλŠ” λͺ¨λ‘ 같은 κ²°κ³Όλ₯Ό 좜λ ₯ν•˜μ§€λ§Œ, μ˜λ―Έμ μœΌλ‘œλŠ” μ™„μ „νžˆ λ‹€λ₯΄λ‹€.
첫 번째 μ½”λ“œλŠ” λ‹¨μˆœνžˆ 숫자λ₯Ό λ”ν•˜λŠ” 연산을 μˆ˜ν–‰ν•˜μ§€λ§Œ, 두 번째 μ½”λ“œλŠ” addλΌλŠ” ν•¨μˆ˜μ˜ 의미λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€.

μ—¬κΈ°μ„œ 의미둠적으둜 μ€‘μš”ν•œ 차이가 λ°œμƒν•œλ‹€.

  1. 첫 번째 μ½”λ“œμ—μ„œλŠ” 1 + 2κ°€ κ³„μ‚°λ˜κΈ΄ ν•˜μ§€λ§Œ, 이 연산이 μ–΄λ–€ 의미λ₯Ό κ°€μ§€λŠ”μ§€ λͺ…ν™•ν•˜μ§€ μ•Šλ‹€.
  2. 두 번째 μ½”λ“œμ—μ„œλŠ” addλΌλŠ” ν•¨μˆ˜κ°€ μ‚¬μš©λ˜λ©΄μ„œ β€œμ΄ 연산이 λ§μ…ˆ(addition)μ΄λΌλŠ” 의미λ₯Ό κ°€μ§„λ‹€β€λŠ” 것이 μ½”λ“œμ— λ“œλŸ¬λ‚œλ‹€.

즉, μ½”λ“œμ˜ μ˜λ―ΈλŠ” κ·Έ μ½”λ“œκ°€ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ΄ 무엇인지, 그리고 그것이 μ–΄λ–»κ²Œ ν•΄μ„λ˜λŠ”μ§€μ— λŒ€ν•œ 것이닀.
λ‹¨μˆœνžˆ μ˜¬λ°”λ₯Έ ꡬ문(문법) μž‘μ„±λ³΄λ‹€ ν•œ 단계 λ‚˜μ•„κ°€μ„œ, μ‚¬λžŒκ³Ό 컴퓨터 간에 μ›ν™œν•œ ν˜‘μ—…μ„ μœ„ν•΄ μž‘μ„±ν•˜λŠ” 차원이라고 λ³Ό 수 μžˆλ‹€.


의미 μžˆλŠ” μ½”λ“œ μž‘μ„±μ„ μœ„ν•œ κ³ λ―Ό

개발 곡뢀λ₯Ό ν•˜λ‹€ 보면 μœ„μ™€ 같은 meme을 μ‹¬μ‹¬μΉ˜ μ•Šκ²Œ λ³Ό 수 μžˆλ‹€. λ¬Όλ‘  λ‹¨μˆœνžˆ 웃고 λ„˜μ–΄κ°ˆ 일이 μ•„λ‹ˆλΌ, μ‹€μ œλ‘œ 코딩을 ν•  λ•Œλ§ˆλ‹€ κ²ͺλŠ” ν˜„μ‹€μ μΈ λ¬Έμ œμ΄κΈ°λ„ ν•˜λ‹€.

κ·Έλ ‡λ‹€λ©΄ μ™œ μ‚¬λžŒλ“€μ€ λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ 이름을 μ§“λŠ” 데에 였랜 μ‹œκ°„μ΄ κ±Έλ¦¬λŠ” 걸까?

1. μ½”λ“œμ˜ μ˜λ―ΈλŠ” μ΄λ¦„μ—μ„œ μ‹œμž‘λœλ‹€

λ§Œμ•½ λ‚΄κ°€ μ§  μ½”λ“œκ°€ μ•„λ‹Œ λ‹€λ₯Έ μ‚¬λžŒμ΄ μ§  μ½”λ“œλ₯Ό λ°›μ•„μ„œ μž‘μ—…μ„ μ΄μ–΄λ‚˜κ°„λ‹€κ³  ν•΄λ³΄μž.
별닀λ₯Έ μ»¨λ²€μ…˜ 없이, κ·Έλƒ₯ 막 지은 μ΄λ¦„λ“€λ‘œ μž‘μ„±ν•œ μ½”λ“œλ₯Ό 보면 컴퓨터λ₯Ό λ˜μ§€κ³  싢을 것이닀.
λ§Œμ•½ 타인과 ν˜‘μ—…ν•˜λŠ” 상황이 μ•„λ‹ˆλ”λΌλ„, λ‚΄κ°€ μ§€κΈˆ μ§  μ½”λ“œλ₯Ό λ―Έλž˜μ— λ‚΄κ°€ μ•Œμ•„λ³΄μ§€ λͺ»ν•˜λŠ” 상황도 λ°œμƒν•˜κΈ° 맀우 쉽닀.

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ½”λ“œμ˜ 의미λ₯Ό μ΄ν•΄ν•˜λŠ” κ°€μž₯ 첫 번째 λ‹¨μ„œλŠ” λ³€μˆ˜λͺ…κ³Ό ν•¨μˆ˜λͺ…이닀.
λ§ˆν¬μ—…κ³Ό μŠ€νƒ€μΌλ§μ—μ„œλŠ” μ‚¬μš©ν•œ νƒœκ·Έμ˜ μ’…λ₯˜μ™€ 클래슀 λ˜λŠ” 아이디 이름일 것이닀.

HTML의 Semantic

μ•„λž˜ 두 μ½”λ“œλ₯Ό λΉ„κ΅ν•΄λ³΄μž. ν•œ μ½”λ“œλŠ” div νƒœκ·Έλ‘œλ§Œ κ΅¬μ‘°ν™”λ˜μ–΄ 있고, ν•œ μ½”λ“œλŠ” μ‹œλ§¨ν‹± μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μ‘°ν™”ν–ˆλ‹€.

// div νƒœκ·Έλ‘œλ§Œ ꡬ쑰화
<div class="header">
  <div class="nav">...</div>
</div>
<div class="main">...</div>
<div class="footer">...</div>
// semantic tagλ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ쑰화
<header>
  <nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>

두 HTML μ½”λ“œ λͺ¨λ‘ ν™”λ©΄ μƒμ—μ„œλŠ” λ™μΌν•˜κ²Œ κ΅¬ν˜„λœλ‹€. κ΅¬ν˜„λ¨(syntax)에 μžˆμ–΄μ„œ μ°¨μ΄λŠ” μ—†μ§€λ§Œ, μ½”λ“œκ°€ κ°€μ§€λŠ” 의미둠적인 κ΄€μ μ—μ„œλŠ” 두 λ²ˆμ§Έμ— μž‘μ„±λœ μ½”λ“œκ°€ 더 쒋은 μ½”λ“œλ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄ HTML νƒœκ·Έλ§Œ 보더라도

  • <header> β†’ λ¬Έμ„œμ˜ 머리말 λΆ€λΆ„
  • <nav> β†’ λ‚΄λΉ„κ²Œμ΄μ…˜
  • <main> β†’ μ£Όμš” μ½˜ν…μΈ 
  • <footer> β†’ λ¬Έμ„œμ˜ λ°”λ‹₯κΈ€

μ΄λΌλŠ” 의미λ₯Ό μžμ—°μŠ€λŸ½κ²Œ μ•Œ μˆ˜κ°€ μžˆλ‹€.

CSSμ—μ„œμ˜ Semantic

λ§Œμ•½ ν΄λž˜μŠ€λ‚˜ 아이디λ₯Ό λ¬΄μž‘μœ„λ‘œ μž‘μ„±ν•˜κ±°λ‚˜, μ‹œλ§¨ν‹± νƒœκ·Έλ₯Ό μ§€ν‚€μ§€ μ•Šμ€ 채 divλ‚˜ span을 이후에 μœ μ§€λ³΄μˆ˜ν•˜λŠ” μ‚¬λžŒμ΄ μ½”λ“œλ₯Ό ν•΄μ„ν•˜λŠ” 데 λ§Žμ€ μ‹œκ°„μ„ ν—ˆλΉ„ν•  것이닀.

❌ μ˜λ―Έκ°€ 뢈λͺ…ν™•ν•œ 넀이밍

<div class="box1">...</div>
<div class="box2">...</div>
<div class="big-red">...</div>
.box1 {
  width: 100px;
  height: 100px;
  background-color: blue;
}

.box2 {
  width: 150px;
  height: 150px;
  background-color: green;
}

.big-red {
  font-size: 24px;
  color: red;
}

이 μ½”λ“œμ—μ„œ .box1, .box2 같은 클래슀λͺ…은 이 μš”μ†Œκ°€ μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ μ „ν˜€ μ„€λͺ…ν•˜μ§€ μ•ŠλŠ”λ‹€.
λ˜ν•œ .big-redλΌλŠ” 클래슀λͺ…은 μŠ€νƒ€μΌμ„ μ§μ ‘μ μœΌλ‘œ λ‚˜νƒ€λ‚΄κ³  μžˆμ–΄,
λ§Œμ•½ κΈ€μž 색이 λΉ¨κ°„μƒ‰μ—μ„œ κ²€μ€μƒ‰μœΌλ‘œ 바뀐닀면 이름과 μ‹€μ œ μŠ€νƒ€μΌμ΄ λΆˆμΌμΉ˜ν•˜κ²Œ λœλ‹€.

βœ… μ˜λ―Έκ°€ λͺ…ν™•ν•œ 넀이밍

<div class="profile-card">...</div>
<div class="notification-box">...</div>
<div class="error-message">...</div>
.profile-card {
  width: 100px;
  height: 100px;
  background-color: blue;
}

.notification-box {
  width: 150px;
  height: 150px;
  background-color: green;
}

.error-message {
  font-size: 24px;
  color: red;
}

이제 클래슀 μ΄λ¦„λ§Œ 봐도 각각의 ν΄λž˜μŠ€κ°€ μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ 비ꡐ적 μ‰½κ²Œ 이해할 수 μžˆλ‹€.
μ΄λ ‡κ²Œ 의미λ₯Ό λ°˜μ˜ν•œ 넀이밍을 ν•˜λ©΄, μΆ”ν›„ μœ μ§€λ³΄μˆ˜ν•  λ•Œ μ΄λ¦„λ§Œ 보고도 ν•΄λ‹Ή μš”μ†Œμ˜ 역할을 νŒŒμ•…ν•  수 있기 λ•Œλ¬Έμ— μ½”λ“œμ˜ 가독성이 ν–₯μƒλœλ‹€.

JSμ—μ„œμ˜ Semantic

μ•„λž˜ 두 μ½”λ“œ 쀑 μ–΄λ–€ 것이 더 μ΄ν•΄ν•˜κΈ° μ‰¬μšΈκΉŒ?

let x = 5;
let y = x * x * 3.14;
let radius = 5;
let circleArea = radius * radius * Math.PI;

두 μ½”λ“œ λͺ¨λ‘ 같은 연산을 μˆ˜ν–‰ν•˜μ§€λ§Œ, 이름을 μ–΄λ–»κ²Œ μ§“λŠλƒμ— 따라 μ½”λ“œμ˜ μ˜λ―Έκ°€ 달라진닀.
첫 번째 μ½”λ“œλŠ” x와 yκ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ λͺ…ν™•ν•˜μ§€ μ•Šμ§€λ§Œ,
두 번째 μ½”λ“œλŠ” μ›μ˜ λ°˜μ§€λ¦„(radius)κ³Ό 넓이(circleArea)λ₯Ό κ΅¬ν•˜λŠ” μ½”λ“œλΌλŠ” 것이 μ§κ΄€μ μœΌλ‘œ μ΄ν•΄λœλ‹€.

λͺ¨λ“  μ–Έμ–΄κ°€ κ°€μ§€λŠ” 문법은 λ‹€λ₯΄μ§€λ§Œ, semantic의 μ˜λ―Έμ™€ λͺ©μ μ€ 직관적이고 μ•Œμ•„λ³΄κΈ° μ‰¬μš΄ 이름과 ꡬ쑰λ₯Ό 톡해 μ½”λ“œλ₯Ό λ”μš± λͺ…ν™•ν•˜κ²Œ λ§Œλ“€κ³ , 이λ₯Ό 톡해 ν˜‘μ—…ν•˜λŠ” μ‚¬λžŒλ“€ λ˜λŠ” 미래의 μžμ‹ μ΄ μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ λ•λŠ” 데 μžˆλ‹€.

2. Syntax Error와 Semantic Error

코딩을 ν•˜λ‹€λ³΄λ©΄ 잘λͺ»λœ 문법에 μ˜ν•΄ Syntax Errorκ°€ λ°œμƒν•œ κ²½ν—˜μ΄ μžˆμ„ 것이닀. Syntax Error(문법 였λ₯˜)κ°€ λ°œμƒν•˜λ©΄, 주둜 컴파일 μ–Έμ–΄λŠ” μ‹€ν–‰ μžμ²΄κ°€ μ•ˆ λ˜λŠ” κ²½μš°κ°€ 많고, 인터프리터 μ–Έμ–΄λŠ” λŸ°νƒ€μž„μ—μ„œ μ›ν•˜λŠ” λŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ λ§Žμ„ 것이닀.

Syntax ErrorλŠ” κ·Έ 자체둜 '버그'둜 μ·¨κΈ‰λ˜κΈ° λ•Œλ¬Έμ—, μ ˆλŒ€ μ—†μ–΄μ•Ό ν•˜λŠ” 였λ₯˜μ΄μž 제거 1μˆœμœ„ 였λ₯˜μ΄λ‹€.

Syntax ErrorλŠ” λͺ…λ°±νžˆ 잘λͺ»λœ μ½”λ“œλ‘œ 인해 λ°œμƒν•˜λŠ” 였λ₯˜μ΄λ―€λ‘œ, ν”„λ‘œκ·Έλž¨ 싀행을 λ°©ν•΄ν•˜λ©° 이λ₯Ό ν•΄κ²°ν•΄μ•Όλ§Œ 정상적인 λ™μž‘μ„ ν•  수 μžˆλ‹€. κ·Έλ ‡λ‹€λ©΄ Semantic ErrorλŠ” λ¬΄μ—‡μΌκΉŒ?

Semantic Error

Semantic ErrorλŠ” λ¬Έλ²•μƒμœΌλ‘œλŠ” λ¬Έμ œκ°€ μ—†λŠ” μ½”λ“œμ—μ„œ λ°œμƒν•˜λŠ” 였λ₯˜λ‘œ, μ˜λ„ν•œ λŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 경우λ₯Ό λ§ν•œλ‹€. 즉, μ½”λ“œκ°€ μ»΄νŒŒμΌλ˜κ±°λ‚˜ μ‹€ν–‰λ˜μ§€λ§Œ, κ·Έ κ²°κ³Όκ°€ μš°λ¦¬κ°€ κΈ°λŒ€ν•˜λŠ” λ™μž‘κ³Ό λ§žμ§€ μ•Šμ„ λ•Œ 생긴닀. μ΄λŠ” μ½”λ“œμ˜ μ˜λ―Έκ°€ 잘λͺ» ν•΄μ„λ˜μ—ˆκ±°λ‚˜ 잘λͺ» μž‘μ„±λ˜μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

μ˜ˆμ‹œ: 잘λͺ»λœ 의미의 μ½”λ“œ

profile
Technologically solve everyday challenges

0개의 λŒ“κΈ€