4월 28일 (목) Three.js, pixiJS, WebGL, solidity, spark AR, 객체지향 VS 절차지향, HTML5, web 3.0

Southbig·2022년 4월 28일
0

Threejs

웹페이지에 3D객체를 쉽게 렌더링하도록 도와주는 자바스크립트 3D 라이브러리

Three.js는 3D객체를 렌더링하는 데 webgL을 사용한다 (WebGL:점,선,삼각형만을 그리는 아주 단순한 시스템)

Pixijs

PixiJS는 WebGL을 사용하는 고속 HTML5 2D 렌더링 라이브러리
Canvas 혹은 WebGL API를 Flash API와 유사하게 사용할 수 있다

WebGL

WebGL은 별도 플러그인 없이도 자바스크립트를 사용해 브라우저에서 그래픽을 렌더링

(WebGL:점,선,삼각형만을 그리는 아주 단순한 시스템)

Solidity

  • 스마트컨트랙트

solidity = contract 기반 language

contract란 블록체인 네트워크에서 쓰이는 smart contract를 말하는 것

Smart Contract는 계약의 이행을 자동으로 해주는 코드

ex) 어떤 물건을 코인을 받고 보내주기로 했을 때 물건을 받고 물건 받은 사람이 '받았음' 버튼을 누르면 물건을 판 사람한테 코인이 가게끔 하는 방식.
솔리디티는 쉽게 말하면 '스마트 컨트랙트'라는 계약서를 만드는 랭기지라고 할 수 있다.
이더리움 버추얼 머신(Ethereum Virtual Machine)에서 작동하게끔 디자인된 언어라고 한다.

GCP (Google Cloud Platform)

Spark AR

Spark AR 이란 ?
인스타그램 및 페이스북에 사용하는 AR 효과를 만들 수 있는 플랫폼입니다

객체지향 VS 절차지향언어

객체지향언어의 특징 (OOP)

객체지향언어의 특징은 크게 캡슐화, 상속, 다형성, 추상화 4가지로 나눌 수 있습니다.

1. 캡슐화

데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것입니다. 이 특징 때문에 데이터와 코드의 형태를 외부에서 알 수 없습니다.

당연히 캡슐화되어있지 않은 데이터와 코드는 사용하기 어렵습니다.

  • 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것
    다시 한번 말하자면 변수와 함수를 하나로 묶는것을 말한다
  • 하지만 무작정 한대 묶으면 되는 것이 아니라 객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶는다고 생각해야한다. 이것이 많이 들어본 의미로는 은닉화라고 한다.
  • 또한 데이터를 절대로 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근 해야하는데 이를 가능하게 해주는 것이 바로 캡슐화이다.
  • 따라서 캡슐화에 성공하면 당연히 은닉화도 자연스럽게 효력이 나타난다.

2. 상속

부모가 자식에게 유전자를 물려주듯, 상위 클래스의 모든 것을 하위 클래스가 이어 받는 것입니다.

상속성, 재사용(Inheritance)

  • 상위 개념의 특징을 하위 개념이 물려받는 것
  • 객체지향의 하이라이트 부분이라고 생각한다. 상속이란 개념이 없으면 객체지향이나 절차지향이나 도진개진
  • 간단히 예를 들자면, 자동차라는 부모클래스가 있다.

기름을 먹거나 달리는 기능을 하는 자동차인데, 만약 지붕뚜껑이 열리는 특수한 기능을 추가하고 싶다면 기존의 자동차에서 스포차카를 생성한다.

그러면 스포츠카는 기름도 먹고 달리면서 지붕두껑이 열리는 기능도 갖춘 자동차가 되는 것

3. 다형성

상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성되는 것입니다.

부모가 쌍둥이 자식을 낳으면 부모의 유전자가 두 명의 자식으로 재구성되는 것과 같은 이치입니다.

하지만, 그렇다고 해서 두 쌍둥이(재구성된 객체들)의 유전자가 부모(원 개체)의 유전자와 똑같다고 볼 수는 없습니다.

자바의 오버로드, 혹은 오버라이드 다형성이 이 다형성을 드러내는 대표적인 예입니다.

  • 부모클레스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것
  • 간단히 예를 들자면
    군대에서 나는 K2 소총을 잡았고 동기는 K1 소총을 잡았다. 사격 훈련이 있을 때 중대장이 '준비된 사수부터 발사!'라고 외치면 나와 내친구는 명령을 받고 앞의 사로를 향해 총을 쏜다. 이때 중대장은 추상적 객체를 상속받은 모든 객체들에게 명령을 내린것이고 그 병사가 총이 뭐든간에 그냥 발사를 하라는 명령을 한것이다.

즉, 다형성이 없다면 K1 소총을 든 병사 발사, K2 소총을 든 병사 발사 라며 명령을 하나하나 내려야 할 것이다

4. 추상화

실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한(공통적인) 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것입니다.

  • 공통의 속성이나 기능을 묶어 이름을 붙이는 것
  • 객체 지향적 관점에서 클래스를 정의하는 것을 바로 추상화라고 정의 내릴 수 있겠다.
  • 좀 더 살펴보면 물고기, 사자, 토끼, 뱀이 있을 때 우리는 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때,

만약 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다.

객체지향언어의 장점

객체지향언어의 재사용성, 생산성 증가, 자연스러운 모델링이라는 장점이 있습니다.

1. 재사용성

'상속'이 가능하기 때문에 코드를 재사용할 수 있어 편리합니다.

2. 생산성 증가

컴퓨터가 고장났을 때, 문제가 되는 부품만 수리하면 다시 정상 가동됩니다.

마찬가지로 독립된 객체로 이루어져있기 때문에 생산적으로 작업할 수 있고, 유지 및 보수가 용이합니다.

3. 자연스러운 모델링

앞서 말했듯, 객체는 세상에 존재하는 모든 것입니다. 객체지향언어 자체가 우리가 사는 세상을 닮았기 때문에 개발자가 생각하는 대로 자연스럽게 구현할 수 있습니다.

객체지향언어의 단점

1. 느린 개발 속도

모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요됩니다.

2. 느린 실행 속도

객체지향언어의 처리 속도는 절차지향언어보다 느립니다.

3. 높은 난이도

객체지향언어는 대체로 난이도가 높습니다. 특히 다중 상속이 지원되는 c++는 악명이 높습니다.

절차지향언어 (Procedural Programming)

절차지향 프로그래밍에 쓰이는 언어를 절차지향언어라고 하며, 대표적인 예로는 c언어가 있습니다.

절차지향언어는 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 합니다.

자동차 제조를 예로 들자면, 자동차는 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례대로 만들어져야 합니다. 서로 분리되어도 안 되고, 순서가 틀려도 안 됩니다. 절차지향 프로그래밍 역시 이와 같습니다.

절차지향언어의 구조는 컴퓨터의 처리구조와 유사합니다. 따라서 실행 속도가 빠르다는 것이 장점입니다.

하지만, 핸들이 고장났다고 엔진부터 바퀴까지 전부 수리해야 한다면 얼마나 비효율적일까요?

소프트웨어가 눈부신 발전을 이루면서 절차지향언어의 단점이 두드러지게 됩니다.

절차지향언어의 단점

1. 유지보수의 어려움

모든 구성요소가 유기적으로 연결되어 있다는 말은, 하나가 고장났을 때 시스템 전체가 고장난다는 뜻입니다.

또한 문제를 해결하기 위해 일부분이 아닌 시스템 전체를 수리해야 한다는 말이기도 합니다.

절차지향언어는 이러한 유지 보수가 매우 까다로운 편이며, 특히 디버깅(프로그램의 문제를 찾아내어 고치는 과정)이 어렵습니다.

2. 엄격하게 순서가 정해져 있어 비효율적

실행 순서가 정해져 있기 때문에 코드의 순서가 바뀌면 결과가 달라질 가능성이 높습니다.

즉, 언어의 융통성이 부족하여 생산 효율이 떨어집니다.

이러한 절차지향언어의 단점을 보완하기 위해 객체지향의 개념이 등장합니다.

HTML 5

HTML5는 HTML의 새로운 버전으로 Client Side Technology 기술의 중심이 되는 마크업 언어입니다.

가장 특징적인 것은 기존의 웹 문서에서는 HTML 만으로 웹 서비스를 구성하는 것이 불가능하였지만 HTML5 로 넘어오면서 클라이언트와 서버와의 통신이 가능하며 이에 대한 부가 기능을 제공함으로써 다른 외부 Active-X와 같은 plug-ins 를 사용하지 않고도 웹 서비스를 제공할 수 있을 정도로 많은 기능이 추가되었다는 것입니다.

HTML5 는 Client Side Technology 를 강력하게 지원하는 단순 표현 HTML을 그 이상의 의미를 가지도록 더 높은 차원으로 발전시킨 기술입니다.

즉, 기존의 HTML은 HTML 4.0 이후에도 W3C에 의해서 HTML 4.01, XHTML 1.0, 1.1, 2.0 등으로 발전해 왔지만 이런 그동안의 HTML 에서 의 한계를 극복하기 위해 HTML5 가 탄생하게 된 것입니다.

web 3.0

웹 3.0(Web 3.0)이란 컴퓨터가 시맨틱  기술을 이용하여 페이지에 담긴 내용을 이해하고 개인 맞춤형 정보를 제공할 수 있는 지능형  기술을 말한다. 지능화, 개인화된 맞춤형 이다. 웹 3.0은 월드 와이드 이 앞으로 어떻게 될 것인지를 서술할 때 주로 사용되는 용어이다.

profile
즐겁게 살자

0개의 댓글