Skip to content

Latest commit

ย 

History

History
77 lines (51 loc) ยท 3.71 KB

transcompiler.md

File metadata and controls

77 lines (51 loc) ยท 3.71 KB

๐Ÿ’ป Compiler์™€ TransPiler, Polyfill


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)

  • ์ปดํŒŒ์ผ๋Ÿฌ๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ธ๊ฐ„์˜ ์˜๋„(ํ”„๋กœ๊ทธ๋žจ)๋ฅผ ๊ธฐ๊ณ„(์ปดํ“จํ„ฐ)๊ฐ€ ์ดํ•ดํ•˜๊ฒŒ ๊ธฐ๊ณ„์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ณ€ํ™˜๊ธฐ์ด๋‹ค.
  • ์ „ํ†ต์ ์ธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ณ ๊ธ‰์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ €๊ธ‰์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๐Ÿƒ ๊ธฐ๊ณ„์–ด

  • ๊ธฐ๊ณ„์–ด๋ž€? ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•˜๋Š” 2์ง„ ์ˆซ์ž(0๊ณผ1)๋กœ ์ž‘์„ฑ๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ C์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ Cํ”„๋กœ๊ทธ๋žจ์€ C์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • ๋ณ€ํ™˜๋œ ๊ธฐ๊ณ„์–ด๊ฐ€ ์žˆ์–ด์•ผ ์ปดํ“จํ„ฐ(๊ธฐ๊ณ„)๊ฐ€ Cํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿƒ ์ปดํŒŒ์ผ๋Ÿฌ ๋ณ€ํ™˜ ์˜ˆ์ œ

  ํŒŒ์Šค์นผ -> C์–ธ์–ด
  JAVA -> Bytecode
  C -> assembly
  TypeScript -> JavaScript

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ(TransPiler)

  • ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ๋Œ€ ์†Œ์Šค ์ปดํŒŒ์ผ๋Ÿฌ (Source - to - Source Compiler) ๋˜๋Š” ํŠธ๋žœ์Šค ์ปดํŒŒ์ผ๋Ÿฌ(Transcompiler)๋กœ ๋ถˆ๋ฆฐ๋‹ค.
  • ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋™๋“ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ผ์ข…์ด๋‹ค.
  • ์ฆ‰, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋” ํฐ ๋ฒ”์ฃผ์— ์†ํ•˜๊ณ , ๊ทธ ์•ˆ์— ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ ๊ฐœ๋…์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿƒ ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ ๋ชฉ์ 

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

๐Ÿƒ ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ ์˜ˆ์ œ

  JavaScript ES6 -> ES5
  C++ -> C
  CoffeeScript -> JavaScript

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ํด๋ฆฌํ•„(Polyfill)

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

๐Ÿƒ ํด๋ฆฌํ•„ ์˜ˆ์‹œ

  HTML5 shiv: ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ9 ์ดํ•˜์—์„œ ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋ฅผ ์ง€์›ํ•˜๋„๋ก ํ•œ๋‹ค.
  CSS3 PIE: ์ธ์Šคํ„ด ์ต์Šคํ”Œ๋กœ๋Ÿฌ9 ์ดํ•˜์—์„œ CSS3 ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ(border-radius)์†์„ฑ์„ ์ง€์›ํ•˜๋„๋ก ํ•œ๋‹ค.
  FlashCanvas: ์บ”๋ฒ„์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ8 ์ดํ•˜์—์„œ HTML5 ์บ”๋ฒ„์Šค๋ฅผ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ8 ์ดํ•˜์— ๋งž๋Š” ํ”Œ๋ž˜์‹œ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ฐ”๊พธ์–ด ๋‚˜ํƒ€๋‚ด์ค€๋‹ค.

์ฐธ๊ณ 

https://ideveloper2.tistory.com/166
https://ko.wikipedia.org/wiki/%ED%8F%B4%EB%A6%AC%ED%95%84_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)
https://ooz.co.kr/416
https://ssben.tistory.com/27