본문 바로가기

코딩을 지탱하는 기술 - 4 문법의 탄생 문법이란 스택 머신과 FORTH 구문트리와 LISP 중위 표기법 정리 문법이란? 프로그래밍 언어에는 여러 가지 규칙이 있으며 그 규칙 또한 프로그래밍 언어가 사람을 편리하게 하기 위해 만들어 진것처럼 무언가를 편하게 하기 위해서 만들어졌다.'식'을 표현하는 규칙을 통해 설명하며 언어는 FORTH 와 LISP를 통해서 설명한다.FORTH의 경우 문법이 거의 없으며 LISP는 괄호로 코드 구조를 표현한다.이 두 언어가 가지고 있는 기능은 현재의 프로그래밍 언어에서도 중요한 역활을 한다. 연산자 우선순위 1 + 2 * 3 라는 소스코드가 있다면 이것은 9인가 7인가?그건 아마도 '( 1 + 2 ) * 3 와 1 + ( 2 * 3 ) 의 규칙중 어떤것을 적용하였는가?' 에 따라서 다를 것이다.하지만.. 더보기
코딩을 지탱하는 기술 - 3 프로그래밍 언어를 조감하다 프로그래밍 언어 탄생의 역사 프로그래밍 언어 탄생의 목적 정리 *조감하다(피해 상황을 낱낱이 헤아리다.) 프로그래밍 언어 탄생의 역사 프로그래밍 언어에서 새로운 것은 과거의 것을 알고 난 후에야 만들어지는 것이며, 지금은 '당연하다'고 여기는 것도 과거에는 아직 발견되지 않은 것이었다. 옛날 사람 시점에서 생각하는 방법은 새로운 것을 배우는 사람에게 매우 유리하게 작용한다. 프로그래밍 언어는 인간을 편하게 하기 위해 만들어 졌고, 여기서 프로그래밍 언어의 탄생 역사와 두명의 언어 설계자를 소개한다. 케이블을 연결하다 1946년 - ENIAC의 발명과 진공관을 연결해서 프로그래밍을 하는 컴퓨터 프로그램 내장 방식으로 1949년 - EDSAC의 개발과 테이프에 구멍을 뚫어서 데이터.. 더보기
코딩을 지탱하는 기술 - 2 효율적으로 언어 배우기 비교를 통한 배움 역사를 통한 배움 정리 비교를 통한 배움 처음에는 C 언어와 Ruby의 참거짓 값을 가지고 언어 마다 규칙이 다르며 프로그래밍 언어의 규칙이 아니다라는 걸 설명한다. C언어의 참거짓 값은 '0이 거짓이고' 그 이외의 값은 참이고 'Ruby에서는 0이 참이다'라는 걸 보여주면서 잘못된 고정관념을 가지지 않도록 알려주고 있다.나 같은 경우에도 Javascript를 위주로 공부해서 다른 프로그래밍 언어에 대해서는 잘 몰랐는데 이번 기회에 잘못된 고정관념을 가지지 않게 된 좋은 기회였던거 같다. 그 뒤로는 간다하게 Java의 참거짓 값에대해서도 소개한다. //C int main() { if(o) { printf("true!\n"); }else{ printf("false!.. 더보기
코딩을 지탱하는 기술 - 1 코딩을 지탱하는 기술 효율적으로 언어 배우기 프로그래밍 언어를 조감하다 문법의 탄생 처리 흐름 제어 함수 에러 처리 이름과 스코프 형 컨테이너와 문자열 병행처리 객체와 클래스 상속을 통한 재사용 이 책은 총 12장으로 나눠 프로그래밍 기법에 대해서 소개하고 있다. 특정 언어를 배우는 책이라기보다 모든 프로그래밍 언어에 공통으로 적용할 수 있는 것들에 대해 나와 있다.이 책에서 가장 중요한것은 '왜'를 알아내는 것이다.왜 다양한 개념들이 존재하고 왜 이런 개념이 탄생했는지 설명해준다.완전 초보자가 볼 책 보다는 어느정도 프로그래밍을 공부했고 앞으로 다른언어에 대해서 공부할 계획이 있는 분들이 읽으면 좋을 책이다. 더보기
9day - 함수와 프로토타입 체이닝 (3) 함수와 프로토타입 체이닝 함수 인자로 전달 함수는 다른 함수의 인자로도 전달이 가능하다.12345678910//함수 표현식으로 foo() 함수 생성var foo = function(func) { func(); //인자로 받은 func() 함수 호출}; //foo 함수 실행 (1)foo(function() { console.log('Function can be used as the argument.');});Colored by Color Scripter csfoo() 는 함수 표현식 방법으로 생성한 함수로서, 인자로 받은 func 함수를 내부에서 함수 호출 연산자()를 붙여 호출하는 기능을 한다. (1) foo() 함수를 호출할 때 함수 리터럴 방식으로 생성한 익명함수를 func 인자로 넘겼다. 따라서 f.. 더보기
8day - 함수와 프로토타입 체이닝 (2) 1)함수 호이스팅 함수 생성 방식에 대해서 앞에서 알아봤는데 이들 사이에는 동박 방식이 약간 차이가 있다.그중에 하나가 바로 함수 호이스팅(Function Hoisting)이다. 더글러스 크라포드는 자바스크립트 핵심 가이드 에서 함수 표현식만을 사용할 것을 권하고 있다.그 이유중 하나는 함수 호이스팅 때문이다. 12345678add(2,3) //5 (1) // 함수 선언문 형태로 add () 함수 정의function add(x, y) { return x + y;}// (2) add(3, 4); // 7 (3)cs1) 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효 범위는 코드의 맨 처음부터 시작한다. 이것을 함수 호이스팅이라고 부른다. 함수 호이스팅은 함수를 사용하기 전에 반.. 더보기
7day - 함수와 프로토타입 체이닝 (1) 저번주는 한주 쉬어가는 시간을 가지면서 원기보충을 한거같지만 사실 더 피곤하다.드디어 배열이 끝나서 이제 함수로 넘어가도록 해보자 산넘고 물을 건넜더니 또 산이있다. 함수와 프로토타입 체이닝 자바스크립트에서 가장 중요한 개념 1순위 그건 함수이다. 함수를 얼마나 이해하고 활용하느냐에 따라서 고급 자바스크립트 개발자가 되느냐 마느냐를 결정할 정도이니깐 그만큼 중요하니깐 정신차리고 시작하자.이번 장에서는 특정기능을 제공하는 코드를 정의하고, 모듈화처리, 클로저, 객체생성 등 자바스크립트의 근간이 되는 많은 기능을 알아본다.1)함수 정의자바스크립트에서 함수를 생성하는 3가지 방법을 제공한다.함수 선언문함수표현식Function() 생성자 함수 1-1)함수 리터럴 함수도 일반 객체처럼 값으로 취급된다. 객체리터럴.. 더보기
6day - 데이터 타입과 연산자(5) 1-1)Array( ) 생성자 함수 배열 리터럴도 결국 자바스크립트에서 기본 제공 Array () 생성자 함수로 배열을 생성하는 과정을 단순화시킨 것이다.간단하게 Array() 생성자 함수를 알아보자.(개발자들은 배열 리터럴대신 Array() 함수를 사용한다.)1234567var foo = new Array(3);console.log(foo); // undefined x 3console.log(foo.length) // 3 var bar = new Array( 1, 2, 3 );console.log(bar); // [ 1, 2, 3 ]console.log(bar.length) // 3csArray () 생성자 함수를 호출할때 인자 개수에 따라 동작이 다르므로 주의 해야한다.호출할 때 인자가 1개이고, 숫.. 더보기