2018. 9. 12. 14:21ㆍWeb Programming/_JAVA SCRIPTS
윌리엄 셰익스피어
W I L L I A M
S H A K E S P E A R E
1564-1616
그토록 불쾌하면서도 아름다운 언어는 일찍이 본 적이 없다.
감정에 대해서 직접 기술하지 않는 헤밍웨이의 방식과는 매우 다르게,
윌리엄 셰익스피어는 인간의 마음을 최대한 철저히 파고든다.
경이로울 정도로 표현력이 풍부한 운문을 통해, 셰익스피어는 주인공의 마음에 생긴 균열을 보여주고
영혼을 까발린다.
셰익스피어는 희곡과 소네트(10개의 음절로 구성되는 시행 14개가 일정한 운율로 이어지는 14행시)에서 약강5보격을 매우 많이 사용한다. 이는 셰익스피어가 활동하던 엘리자베스 시대에 인기가 많았던 서정시의 형식이다.
다음은 셰익스피어의 [18번 소네트]에서 약강5보격으로 쓴 2행 연구 (두개의 시행이 연달아오며, 이 두개의 시행이 서로 각운을 이루며 길이가 같은것을 말함) 이다.
진한 대분자로 표시한 부분이 강세가 실리는 부분이다.
음보란 시에서 사용하는 운율의 단위로, 강세가 실리는 음절 한개와 강세가 실리지 않는 음절 한 개 이상으로 구성된다.
약강격이란 두 음절로 이뤄진 음보 중에서 두 번째 음절에 강세가 오는것을 가리킨다.(예를들어 so LONG나 con BREAHE 처럼).
뒷 음절에 강세가 실리는 양강격이 다섯개가 연이어 나오는 것을 약강 5보격이라고 한다.
즉, 모두 10개의 음절이 나오는데 이중 짝수번째 음절에 강세가 실린다.
셰익스피어는 종종 엄격한 약강5보격에서 벗어난 방법을 써서 극적인 강조 효과를 낸다. 즉, 음절을 추가하거나 한 번 건너뛰고 강세를 주는 방법이다. 희곡[리처드 3세]의 유명한 첫 대사를 보면, 첫 번째 음보의 강세가 뒤바뀌어 있다.(이를 강약격이라고 부른다.) 이렇게 함으로써 그는 이제Now 라는 단어에 긴박감을 더하는 효과를 냈다.
function theSeriesOfFIBONACCI(theSize){
//2막에 걸쳐 행해지는 계산
//자바-스크립트의 익살스러운 논리를 사용함
//등장인물
var theResult; //여러 수를 포함하기 위한 배열
var theCounter; //하나의 수, for루프에 쓰일 하인
//1막 : 초기화를 위해 0이 추가됨
//[theResult 입장]
//고귀한 리스트에 0을 부여한다.
var theResult = [0];
//2막 : 마지막 두 수를 질의하고 더하는 루프
//[theCounter 입장]
//1에서 시작해 그다음 수로 진행해나간다.
for(theCounter = 1; theCounter < theSize; theCounter++){
//점을 쳐서 인접한 멤버의 값을 설정한다.
theResult[theCounter] = (theResult[theCounter-1] || 1) +
theResult[Math.max(0, theCounter-2)];
}
//이제 다 됐으니, 이것이 답이다.
return theResult;
//[퇴장]
}
-> 여기서 셰익스피어다운 장치를 두가지 정도 발견할수 있다.
먼저 피보나치 수열을 담을 배열의 첫 인덱스에 0을 초기화 함으로써, || 연산자를 활용하여 다음값을 1로 만드는 장치이다.
그리고, Math.max 메서드 사용하여, theResult배열의 인덱스가 음수가 될경우 0번 인덱스를 참조하게하는 장치이다.
(theResult[theCounter-1] || 1) 의 경우
자바스크립트에서 거짓으로 변환될수 있는 표현이 있는데,
null, NaN, 0, empty string(""), undefined 가 있다. 따라서 첫 루프에서 (theResult[0] || 1) 연산을 실행하게 되고, theResult[0]의 경우 0값을 저장하고 있기때문에 0이아닌 1의 결과가 발생된다.
max 메서드의 경우 간단한 메서드이기 때문에 굳이 설명할 필요는 없을것 같다.
피보나치 수열과제에 대해 셰익스피어가제시한 풀이는 2막으로 구성된 희곡의 형식을 따르며, 자바 스크립트 만의 독특하고 가벼운 스타일을 굉장이 많이 사용한다. 관객이 주요 사건에 젖어들기 전에 작가는 희곡의 출연자들을 소개한다.
엘리자베스 시대 희곡의 전통에 따라, 서막에서는 불완전한 결말이 제시되어 관객의 마음을 불편하게 만들었다가 마지막 장에 가서는 이러한 것들이 만족스럽게 해소되면서 관객은 편안함과 유쾌함을 느끼게 된다.
셰익스피어의 코드는 장황해지기도 하는데, 우리는 그렇지 않은 스타일을 기대하지도 않는다. 그는 재치있는 장치를 몇가지 사용했는데, 예를들어 Math.max 메서드 사용하여 배열 theResult가 음수 인덱스로 참조되는 수모를 당하지 않도록 처리했다.
'Web Programming > _JAVA SCRIPTS' 카테고리의 다른 글
프로그램의 평가와 실행과정 (0) | 2019.03.31 |
---|---|
헤밍웨이의 피보나치수열 (0) | 2018.09.12 |