본문으로 건너뛰기

코딩을 지탱하는 기술 01

· 약 3분
Seokjae Lee
Software engineer

원문: https://doljae.tistory.com/32

Stack Machine​

작동 및 연산에 스택을 사용하는 장치 혹은 기법 -> 후위 표기법(postorder)

1과 2를 더한 것에 3을 곱하다 -> 1 2 + 3 *

2와 3을 곱한 후 1을 더한다 -> 2 3 * 1 +

Java, Python의 VM 형태도 스택 머신의 형태를 띤다.

Python의 dis 라이브러리를 이용하면 VM이 실행할 명령 열을 출력할 수 있다.

LISP​

괄호로 시작해서 명령어가 맨 앞에 나온다. 그다음 공란으로 간격을 만들고 무엇을 더할 것인지를 기술한다.

-> 전위 표기법(preorder)

1과 2를 더한다 -> (+ 1 2)

1과 2를 더한 후 3을 곱한다 -> (* (+ 1 2) 3 )

Python의 ast 라이브러리를 이용하면 특정 코드가 어떤 구문 트릴로 구성되어 있는지 알 수 있다.

<table class="tt-plugin-interpark" style="background: #fff; border: 1px solid #e0e0e0; width: 408px;" border="0" width="100%" cellspacing="0" data-darkreader-inline-bgimage="" data-darkreader-inline-bgcolor="" data-darkreader-inline-border-top="" data-darkreader-inline-border-right="" data-darkreader-inline-border-bottom="" data-darkreader-inline-border-left=""><tbody><tr><td style="vertical-align: top; padding: 10px 0 10px 10px;" width="70"><a href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=213202081&amp;refererType=8303&amp;bookblockname=bpmain_in&amp;booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&amp;key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener"><img style="border: 0 none;" src="http://bimage.interpark.com/goods_image/2/0/8/1/213202081h.jpg" width="66" height="90" data-darkreader-inline-border-top="" data-darkreader-inline-border-right="" data-darkreader-inline-border-bottom="" data-darkreader-inline-border-left=""></a></td><td style="vertical-align: top; padding: 10px 10px 10px 15px;"><dl style="margin: 0; padding: 2px 0 0 0; list-style: none; font: 11px dotum, sans-serif; letter-spacing: -1px; color: #777;" data-darkreader-inline-color=""><dt style="padding: 0; margin: 0;"><a style="font-size: 12px; color: #444 !important; font-weight: bold; text-decoration: none !important;" href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=213202081&amp;refererType=8303&amp;bookblockname=bpmain_in&amp;booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&amp;key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener" data-darkreader-inline-color="">코딩을 지탱하는 기술</a></dt><dd style="padding: 7px 0 0 0; margin: 0; color: #a0a0a0;" data-darkreader-inline-color="">국내도서</dd><dd style="padding: 17px 0 0 0; margin: 0;">저자 : 니시오 히로카즈 / 김완섭역</dd><dd style="padding: 4px 0 0 0; margin: 0;">출판 : 비제이퍼블릭 <span style="letter-spacing: normal;">2013.10.16</span></dd></dl><a style="float: right; width: 44px; height: 11px; background: url('//t1.daumcdn.net/tistory_admin/static/images/icon_ipark_detail.gif') no-repeat; overflow: hidden; display: block; text-indent: -1000em;" href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=213202081&amp;refererType=8303&amp;bookblockname=bpmain_in&amp;booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&amp;key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener" data-darkreader-inline-bgcolor="">상세보기</a></td></tr></tbody></table>