🔥목차🔥
1. 프로그래밍 구조에 대한 독서 후 정리 이어서
2. 모던 JavaScript 입문 책 정리
📖오늘의 TIL 시작!📖
- 프로그래밍 구조 독서
- 1-1 선언형 프로그래밍 언어
- 절차를 기술하는 것이 아니라 컴퓨터에 '정의'를 전달하고 컴퓨터는 그 정의를 해석하여 동작하게함
- 선언형 프로그래밍은 함수형 프로그래밍 언어를 자주 사용함
- 함수 조합으로 기술해 나가는 스타일임
- 명령형 프로그래밍 언어도 함수를 사용하지만 변화시키면서 처리함
- 1-2 논리형 프로그래밍 언어
- 논리형 프로그래밍 언어는 논리식을 사용해서 관계를 정의함
- 이 관계를 술어라고함 [ 참,거짓중 하나의 값만가짐(Bool타입인가?) ]
- 조건을 만족시킨다는 사고방식은 완전히 새로운 관점임
- 하지만 처리속도 문제도 있어 현재는 실무에서는 많이 사용되지 않는다고 함
- 1-3 스크립트 언어
- 작은 크기의 프로그램을 손쉽게 작성하기 위해서 사용되는 언어
- 파일의 조작, 여러 명령어를 연속으로 실행할 때 사용됨
- 셸 스크립트, JavaScript, VBScript, 웹앱에서 많이 사용되는 PHP, Perl, Ruby, Python도 스크립트 언어로 분류됨
- 1-4 매크로
- 수작업을 자동화할 목적으로 사용되는 프로그램
- Word, Excel 등의 오피스 소프트웨어를 조작하는 VBA에서는 마우스로 조작해서 기록,실행을 할 수 있고 에디터나 브라우저등을 조작하는 WSH등의 경우 JavaScript나 BVScript등의 언어로 기술함
- 텍스트 에디터에서도 독자적인 언어를 실행하는 경우가 있음
- 1-5 마크업 언어
- 문장 구조를 컴퓨터에 알려주는 언어
- 지금 사용하고 있는 이 TIL도 마크업 언어로 작성되는것 같음
- 1-6 프로그래밍 언어 비교
- C언어
- 오래전부터 많은 시스템 개발에 사용된 역사가 있는 언어
- 앱 뿐만이 아니라 OS나 프로그래밍 언어 개발 등 폭 넓은 분야에서 사용되어 왔음
하드웨어에 가까운 부분을 다루기 위해서는 필수적인 언어
- C++
- C언어에 객체지향 기능을 더한 언어
- 임베디드 계열 기기의 소프트웨어 개발이나 게임 개발등에 사용됨
- JavaScript
- 많은 인기를 끌고있는 언어
- 기업의 실무, 대학수업 등에도 사용되고 있어 이용자 수가 많은것이 특징
- JVM이라는 가상머신 상에서 프로그램을 실행함
- JVM만 동작하면 어떤 환경에서라도 이용이 가능함
- C#
- Microsoft사에서 개발 후에 Windows앱 등의 개발에 많이 사용되는 언어
- C++,Java에 가까운 문법으로 되어있음
- 초보자도 배우기 쉬운 언어로 할 수 있음
- GUI를 갖춘 앱 개발 뿐만 아니라 최근에는 게임 개발에 사용되는 유니티에서도 대표적인 언어로 채택됨
- iOS나 Android 앱을 개발할 수 있는 Xamarin에 사용되는등 폭넓은 분야에서 이용되고 있음
- Ruby
- 일본에서 개발하고 최근 인기있는 프로그래밍 언어임
- 스트레스없이 프로그래밍을 즐길 수 있는 언어로 배우기 쉽다고 알려져있음
- Python
- 데이터 분석 및 통계등의 라이브러리가 풍부함
- 머신러닝이나 인공지능 개발에 많이 사용 되고있음
- 들여쓰기의 깊이로 블록을 표현하는것이 특징
- PHP
- 임대 서버 등에서는 사전에 설치된 경우가 많아 환경구축의 번거로움이 적고 바로 사용이 가능함
- 웹앱 프레임워크가 풍부하게 제공되고 있어서 손쉽게 동적 웹페이지를 만들 수 있음
- 모던 JavaScript 정리
2-1 논리연산자와 관계연산자
- 관계 연산자
- 두개의 피연산자를 비교한 결과값을 논리값(true,false)로 반환함
- 주로 제어 구조( if/else구문 , while 문, do/while 문, for 문) 에서 조건식을 만들때 사용함
- a==b ( 값이 같음 : a 값과 b값이 같으면 true , 그 외에는 false )
- a!=b ( 값이 다름 : a 값과 b값이 다르면 true , 그 외에는 false )
- a===b ( 값과 타입이 같음 : a값과 b값이 타입이 같으면 true , 그 외에는 false )
- a!==b ( 값과 타입이 다름 : a값과 b값이 타입이 다르면 true , 그 외에는 false )
- a < b ( 작음 : a값이 b값보다 작으면 true , 그 외에는 false )
- a > b ( 큼 : a값이 b값보다 크면 true , 그 외에는 false )
- a <= b ( 작거나 같음 : a값이 b값보다 작거나 같으면 true , 그 외에는 false )
- a >= b ( 크거나 같음 : a값이 b값보다 크거나 같으면 true , 그 외에는 false )
- 동일 연산자
- 동일 연산자( == )는 좌변과 우변의 피 연산자가 같은지를 판별함
- 내부적으로 좌우 피 연산자의 타입을 변환한 다음에 좌변과 우변이 같은지를 느슨하게 비교함
- 좌우 피 연산자의 타입이 다르다면?
- undefined나 null 같은것으로 친다
- 한쪽이 숫자, 다른한쪽이 문자열이면 문자열을 숫자로 변환해서 비교함
- 둘중 한쪽이 논리값이면 true는 1, false는 0으로 변환하여 비교함
- 한쪽이 객체 다른한쪽이 숫자나 문자열이면 객체를 toString이나 valueOf 메서드를 사용해서 원시타입으로 변환후 비교함
- 앞 규칙에서 모두 벗어난다면 같지않음 으로 판정함
- 일치 연산자
- 피 연산자를 평가한 후에 타입을 변환하지 않은 상태의 두 값을 엄격하게 비교함
- 타입이 모두같으면 모두같다고 판정하고 그렇지않으면 그렇지않다고 판정함
- NaN만큼은 NaN을 포함한 모든값과 같지 않다고 판정함
- NaN은 x !== x를 만족하는 유일한 값임을 확인 할 수 있음
- 변수의 값이 NaN 인지는 isNaN 함수로도 확인이가능함
- 논리 연산자
- 관계 연산자를 사용하여 만든 논리식과 결합해서 더욱 복잡한 논리를 정의함
- a&&b ( 논리곱 : a와 b가 모두 true 면 true, 그 외에는 false )
- a||b ( 논리합 : a와 b중 하나라도 true면 true, 모두가 false 이면 false )
- !a ( ark true이면 false, false면 true )
- 2-2 비트연산
- 데이터 통신이나 이진 파일을 처리할때 자주 사용함
- 피연산자를 부호 있는 32비트 정수로 변환해서 처리함
- 비트연산자에는 비트논리연산자와 비트 시프트 연산자가 있음, 모든 연산자는 대입 연산자를 사용 할 수 있음
- 2-3 다른연산자들
- 기타 몇가지 연산자들을더 정리할 예정
- typeOf( 데이터타입조사 )
- ?: ( 조건연산자 )
- void ( 정의되지 않은 값을 반환 )
- , ( 왼쪽에서 오른쪽 순서대로 피 연산자를 연속해서 실행한다. )
- delete ( 객체의 프로퍼티나 배열요소를 제거한다 )
- new 새로운 객체를 생성한다 )
- in ( 객체의 프로퍼티 포함 여부를 확인한다 )
- instanceof ( 객체의 종류를 확인한다 )
- ecal() ( 인수로 받은 문자열을 자바스크립트 코드로 사용한다
- typeOf연산자
- 단항 연산자이면서 피 연산자의 데이터 타입을 뜻하는 문자열을 반환함
- typeOf연산자는 함수 이외의 객체에 모두 "object"를 반환함으로 객체 유형은 파악할수 없음
- typeof연산자의 반환값
- 숫자,NaN ( typeof 연산자의 반환값 : " number " )
- 문자열 ( typeof 연산자의 반환값 : " string " )
- 논리값 ( typeof 연산자의 반환값 : " boolean " )
- 정의되지않은값 ( typeof 연산자의 반환값 : "undefined" )
- null 값 ( typeof 연산자의 반환값 : "object" )
- 심벌 ( typeof 연산자의 반환값 : "symbol" )
- 함수 외의 객체 ( typeof 연산자의 반환값 : "object" )
- 함수 ( typeof 연산자의 반환값 : "function" )