20/08/04 TL | RN 참고 블로그, Octave tutorials, 분야별 프로그래밍 언어들
- -
오늘 할 일
프로그래밍 언어 조사
coursera octave/matlab tutorial
리액트 네이티브 공부 + 조사
교차 검증 공부
내일 할 일
수강신청
coursera logistic legression
RN 공부
zoo 데이터셋
-----------------------------------------------------------------------------
현재 내가 즐겨보는 React Native 관련 블로그들
https://wit.nts-corp.com/2020/03/23/6014
도움을 많이 받아서 프로젝트가 끝나고 덧글로 감사인사라도 남겨야겠다.
-------------------------------------------------------------------------------------------------------
Octave 문법
~ : not
% : 주석
xor(1,0)
->1
변수 선언 시, ;를 넣으면, 결과를 출력하지 않는다.
a = 3
-> a = 3
a = 3;
->
그냥 출력할 땐 a 복잡한 것 볼 땐 disp(a)
%0.2f : 소숫점 둘째자리까지 나타냄.
a = pi;
format long
a
-> a = 3.14159265358979
format short
a
-> a = 3.1416
행렬에서 ; 역할은 다음 행으로 가라는 뜻
A = [1 2; 3 4; 5 6]
->A =
1 2
3 4
5 6
v = 1:0.1:2
-> v =
1.0000 1.1000 1.2000 1.3000 ... 2.000
=> 1이 0.1만큼씩 늘어나서 2가 될 때 까지 생성
v = 1: 6
-> v = 1 2 3 4 5 6
ones(2,3)
-> ans =
1 1 1
1 1 1
=> 1로 구성된 2x3행렬 반환
2*ones(2,3)
-> ans =
2 2 2
2 2 2
rand(1,3)
=>랜덤값으로 구성된 (1,3)행렬을 반환
w = randn(1,3)
=>정규 확률 변수(가우시안 확률 변수) 평균이 0이고, 분산 또는 표준 편차가 1인
가우시안 분포로부터 가져온 3가지 값을 랜덤하게 불러옴
w = -6 + sqrt(10)*(randn(1,10000)));
hist(w)
->w에 대한 히스토그램(막대 그래프)를 보여줌. 여기서는 평균이 -6인 가우스
변수의 막대 그래프 분산은 10. 루트10은 3.1
hist(w,50)
->막대를 50개로 보여줌
eye(3)
-> 1 0 0
0 1 0
0 0 1
=>3x3 단위행렬을 보여줌
help eye
=> eye함수에 대한 도움말
help help
=> help함수에 대한 도움말
---------------------------------------------------------------------------
size(A)
-> 3 2
=> 행렬 A의 크기를 보여줌 A는 3 x 2
SZ = size(A)
-> 3 2
size(SZ)
-> 1 2
=> SZ는 두 개의 요소가 행렬 A의 차원을 나타내는 1x2 행렬
=>[3, 2]
size(A,1)
->ans = 3
=> 첫번째 요소의 크기를 반환(행의 개수)
length(A)
->3
=> 가장 긴 차원의 길이를 반환. 행렬에서는 잘 쓰지 않음.
pwd : 현재 혹은 Octave가 위치한 위치.
load featureX.dat
load('featureX.dat')
=>featureX.dat라는 데이터를 불러오는 방법들
who
=> 어떤 변수들이 메모리에 존재하는지 보여준다.
whos를 쓰면 size, 바이트, 타입까지 보여줌.
save hello.mat v
=>변수를 hello.mat 형태로 저장함
clear
=>워크스페이스 내용을 지워줌.
save hello.txt v -ascii
=>ascii코드로 저장해 줌
A(3,2)
-> ans = 6
=> 2행3열
A(2,:)
->3 4
=> 2행 전체
A(:,2)
->2
4
6
=>2열 전체
A([1 3], :)
-> 1 2
5 6
=>1, 3이 들어간 모든 행에서 가져옴.
A = [A, [100; 101; 102]]
->1 2 100
3 4 101
5 6 102
A(:)
->1
2
3
4
5
6
100
101
102
=> 모든 원소를 하나의 벡터에 넣어라.
C = [A B]
=>A B
C = [A; B]
=>A
B
[A B] == [A, B]
-----------------------------------------------------------------------
머신러닝 [자율주행]
아두이노, 라즈베리파이
디자인
보안(블록 체인)
머신러닝 언어들
1.Pytohn
-구문이 간단하고 배우기가 쉬워 다양한 AI 알고리즘을 쉽게 구현할 수 있다. 즉, 개발 시간이 짧고, 복잡한 AI를 개발할 때 적합하다.
-다양한 프로그래밍 스타일을 제공한다. 객체지향, 기능 및 절차 프로그래밍 등을 지원한다.
-다양한 AI라이브러리를 지원한다. 머신 러닝에 사용하는 Pybrain 복잡한 과학적 계산에 사용하는 Numpy가 있다.
2.Lisp
-상징적인 정보를 처리하는 데 적합하다.
-동적 언어로 자동으로 불필요한 정보를 정리하는 기능으로 우수한 프로토타입을 제작할 수 있다.
=>동적 생성이 용이하다.
-리스트 형태로 된 데이터를 처리하도록 설계되어 프로그램이 자료처럼 연산되거나,
기본자료구조가 연결리스트를 사용해 일반적인 연산을 수행하기도 한다. 식의 전개, 인수분해, 미적분, 정리증명, 게임 문제, 자연어 처리 등에 적합하다.
3.R Programming
-R은 데이터 분석 및 조작 분야에 많이 사용된다. 통계 분야에 많이 사용되며 R을 이용해 수학 기호, 플롯, 공식 등을 구할 수 있다.
-머신러닝에도 사용이 가능하다. G모델, Class, TM, RODBC 등 AI 개발에 활용할 수 있는 다양한 패키지를 제공한다.
4.Prolog
-논리형 프로그래밍 언어로 효과적인 패턴 매칭, 트리 기반 데이터 구조화 및 자동 역추적 특징을 가진다.
=>강력하고 유연한 프로그래밍 프레임 워크를 제공한다. 머신러닝에 이상적인 언어.
-의료 프로젝트, 전문가 AI 시스템 설계, 계산 언어학, 자연어 처리 등에 사용된다.
5.JAVA
-사용이 간편하고 디버깅이 쉽다. 패키지 서비스, 대규모 프로젝트와의 단순화된 작업, 데이터의 그래픽 표현 및 사용자 인터랙션 등 다양한 이점을 제공한다.
-표준 위젠 툴킷인 SWT와 스윙이 통합되어 있어서 그래픽과 인터페이스를 표현할 수 있다.
-검색 알고리즘, 인공 신경망, 유전자 프로그래밍 등 다양한 분야에서 사용된다.
6.C++
-속도가 빨라 민감한 인공지능 프로젝트에 유용하다. OOP 원칙도 가지고 있어 AI프로그램에 적합하다.
=>머신러닝, 딥러닝 라이브러리의 상당 부분은 C/C++로 작성되어 있다. API를 제공하며, 다른 프로그래밍 언어에 래퍼(wrapper)를 제공한다.
-템플릿이 안전하고 API를 일반화하는 데 적합하기 때문에 단순하다. 즉, 시간과 성능을 통제할 수 있다.
-C++를 사용하는 대표적인 응용프로그램에는 마이크로소프트 윈도우, 맥 OS, 어도비 포토샵, 마야 3D 소프트웨어, CAD, Mozilla Firefox 등이 있다.
7.Julia
-특별한 분리 컴파일 없이 좋은 성능을 가진다. 수치 분석과 연산 과학을 다룬다.
-수학에 기반을 둬, 데이터 분석가들이 많이 사용한다. 연구 논문에서 알고리즘을 번역해 손실 없이 코드화 하기가 용이하다. 모델 리스크를 줄이고, 안정성을 향상시킬 수 있다.
-오픈소스 언어로 IBM, Intel, NVIDIA, ARM을 포함해 거의 모든 종류의 하드웨어에서 실행 가능하다.
-Matlab, 파이썬, R의 친숙한 구문과 C++의 빠른 속도로 결함할 수 있어 개발자들이 한가지 프로그래밍 언어로 모델을 변환 할 필요가 없어진다. 이를 통해 오류를 줄이고, 시간과 비용을 줄일 수 있다.
-IDE로 Julia studio와 IJulia를 사용한다. IJulia는 Jupyter용 Julia 오늘 할 일
프로그래밍 언어 조사
coursera octave/matlab tutorial
리액트 네이티브 공부 + 조사
교차 검증 공부
내일 할 일
수강신청
coursera logistic legression
RN 공부
zoo 데이터셋
-----------------------------------------------------------------------------
현재 내가 즐겨보는 React Native 관련 블로그들
https://jeffgukang.github.io/react-native-tutorial/docs/basic-tutorial/basic-features(todolist)/01-getting-started/getting-started-kr.html
https://yuddomack.tistory.com/entry/5React-Native-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83-%EB%94%94%EC%9E%90%EC%9D%B8-4%EB%B6%80-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EC%99%80-UI-%EB%A7%88%EB%AC%B4%EB%A6%AC?category=754156
https://wit.nts-corp.com/2020/03/23/6014
도움을 많이 받아서 프로젝트가 끝나고 덧글로 감사인사라도 남겨야겠다.
-------------------------------------------------------------------------------------------------------
Octave 문법
~ : not
% : 주석
xor(1,0)
->1
변수 선언 시, ;를 넣으면, 결과를 출력하지 않는다.
a = 3
-> a = 3
a = 3;
->
그냥 출력할 땐 a 복잡한 것 볼 땐 disp(a)
%0.2f : 소숫점 둘째자리까지 나타냄.
a = pi;
format long
a
-> a = 3.14159265358979
format short
a
-> a = 3.1416
행렬에서 ; 역할은 다음 행으로 가라는 뜻
A = [1 2; 3 4; 5 6]
->A =
1 2
3 4
5 6
v = 1:0.1:2
-> v =
1.0000 1.1000 1.2000 1.3000 ... 2.000
=> 1이 0.1만큼씩 늘어나서 2가 될 때 까지 생성
v = 1: 6
-> v = 1 2 3 4 5 6
ones(2,3)
-> ans =
1 1 1
1 1 1
=> 1로 구성된 2x3행렬 반환
2*ones(2,3)
-> ans =
2 2 2
2 2 2
rand(1,3)
=>랜덤값으로 구성된 (1,3)행렬을 반환
w = randn(1,3)
=>정규 확률 변수(가우시안 확률 변수) 평균이 0이고, 분산 또는 표준 편차가 1인
가우시안 분포로부터 가져온 3가지 값을 랜덤하게 불러옴
w = -6 + sqrt(10)*(randn(1,10000)));
hist(w)
->w에 대한 히스토그램(막대 그래프)를 보여줌. 여기서는 평균이 -6인 가우스
변수의 막대 그래프 분산은 10. 루트10은 3.1
hist(w,50)
->막대를 50개로 보여줌
eye(3)
-> 1 0 0
0 1 0
0 0 1
=>3x3 단위행렬을 보여줌
help eye
=> eye함수에 대한 도움말
help help
=> help함수에 대한 도움말
---------------------------------------------------------------------------
size(A)
-> 3 2
=> 행렬 A의 크기를 보여줌 A는 3 x 2
SZ = size(A)
-> 3 2
size(SZ)
-> 1 2
=> SZ는 두 개의 요소가 행렬 A의 차원을 나타내는 1x2 행렬
=>[3, 2]
size(A,1)
->ans = 3
=> 첫번째 요소의 크기를 반환(행의 개수)
length(A)
->3
=> 가장 긴 차원의 길이를 반환. 행렬에서는 잘 쓰지 않음.
pwd : 현재 혹은 Octave가 위치한 위치.
load featureX.dat
load('featureX.dat')
=>featureX.dat라는 데이터를 불러오는 방법들
who
=> 어떤 변수들이 메모리에 존재하는지 보여준다.
whos를 쓰면 size, 바이트, 타입까지 보여줌.
save hello.mat v
=>변수를 hello.mat 형태로 저장함
clear
=>워크스페이스 내용을 지워줌.
save hello.txt v -ascii
=>ascii코드로 저장해 줌
A(3,2)
-> ans = 6
=> 2행3열
A(2,:)
->3 4
=> 2행 전체
A(:,2)
->2
4
6
=>2열 전체
A([1 3], :)
-> 1 2
5 6
=>1, 3이 들어간 모든 행에서 가져옴.
A = [A, [100; 101; 102]]
->1 2 100
3 4 101
5 6 102
A(:)
->1
2
3
4
5
6
100
101
102
=> 모든 원소를 하나의 벡터에 넣어라.
C = [A B]
=>A B
C = [A; B]
=>A
B
[A B] == [A, B]
-----------------------------------------------------------------------
머신러닝 [자율주행]
아두이노, 라즈베리파이
디자인
보안(블록 체인)
머신러닝 언어들
1.Pytohn
-구문이 간단하고 배우기가 쉬워 다양한 AI 알고리즘을 쉽게 구현할 수 있다. 즉, 개발 시간이 짧고, 복잡한 AI를 개발할 때 적합하다.
-다양한 프로그래밍 스타일을 제공한다. 객체지향, 기능 및 절차 프로그래밍 등을 지원한다.
-다양한 AI라이브러리를 지원한다. 머신 러닝에 사용하는 Pybrain 복잡한 과학적 계산에 사용하는 Numpy가 있다.
www.python.org/
2.Lisp
-상징적인 정보를 처리하는 데 적합하다.
-동적 언어로 자동으로 불필요한 정보를 정리하는 기능으로 우수한 프로토타입을 제작할 수 있다.
=>동적 생성이 용이하다.
-리스트 형태로 된 데이터를 처리하도록 설계되어 프로그램이 자료처럼 연산되거나,
기본자료구조가 연결리스트를 사용해 일반적인 연산을 수행하기도 한다. 식의 전개, 인수분해, 미적분, 정리증명, 게임 문제, 자연어 처리 등에 적합하다.
www.lisp-lang.org/
IDE로는 emacs와 SLIME을 사용한다.
https://www.gnu.org/software/emacs/manual/html_node/eintr/
https://common-lisp.net/project/slime/
3.R Programming
-R은 데이터 분석 및 조작 분야에 많이 사용된다. 통계 분야에 많이 사용되며 R을 이용해 수학 기호, 플롯, 공식 등을 구할 수 있다.
-머신러닝에도 사용이 가능하다. G모델, Class, TM, RODBC 등 AI 개발에 활용할 수 있는 다양한 패키지를 제공한다.
lisp-lang.org/
IDE로는 Rstudio, visual studio, inteliJ등이 있다.
https://rstudio.com/products/rstudio/
4.Prolog
-논리형 프로그래밍 언어로 효과적인 패턴 매칭, 트리 기반 데이터 구조화 및 자동 역추적 특징을 가진다.
=>강력하고 유연한 프로그래밍 프레임 워크를 제공한다. 머신러닝에 이상적인 언어.
-의료 프로젝트, 전문가 AI 시스템 설계, 계산 언어학, 자연어 처리 등에 사용된다.
swi-prolog.org/
ide로는 emacs와 visual studio code를 주로 사용한다.
https://bruda.ca/emacs/prolog_mode_for_emacs
5.JAVA
-사용이 간편하고 디버깅이 쉽다. 패키지 서비스, 대규모 프로젝트와의 단순화된 작업, 데이터의 그래픽 표현 및 사용자 인터랙션 등 다양한 이점을 제공한다.
-표준 위젠 툴킷인 SWT와 스윙이 통합되어 있어서 그래픽과 인터페이스를 표현할 수 있다.
-검색 알고리즘, 인공 신경망, 유전자 프로그래밍 등 다양한 분야에서 사용된다.
java.com/ko/
6.C++
-속도가 빨라 민감한 인공지능 프로젝트에 유용하다. OOP 원칙도 가지고 있어 AI프로그램에 적합하다.
=>머신러닝, 딥러닝 라이브러리의 상당 부분은 C/C++로 작성되어 있다. API를 제공하며, 다른 프로그래밍 언어에 래퍼(wrapper)를 제공한다.
-템플릿이 안전하고 API를 일반화하는 데 적합하기 때문에 단순하다. 즉, 시간과 성능을 통제할 수 있다.
-C++를 사용하는 대표적인 응용프로그램에는 마이크로소프트 윈도우, 맥 OS, 어도비 포토샵, 마야 3D 소프트웨어, CAD, Mozilla Firefox 등이 있다.
isocpp.org/
7.Julia
-특별한 분리 컴파일 없이 좋은 성능을 가진다. 수치 분석과 연산 과학을 다룬다.
-수학에 기반을 둬, 데이터 분석가들이 많이 사용한다. 연구 논문에서 알고리즘을 번역해 손실 없이 코드화 하기가 용이하다. 모델 리스크를 줄이고, 안정성을 향상시킬 수 있다.
-오픈소스 언어로 IBM, Intel, NVIDIA, ARM을 포함해 거의 모든 종류의 하드웨어에서 실행 가능하다.
-Matlab, 파이썬, R의 친숙한 구문과 C++의 빠른 속도로 결함할 수 있어 개발자들이 한가지 프로그래밍 언어로 모델을 변환 할 필요가 없어진다. 이를 통해 오류를 줄이고, 시간과 비용을 줄일 수 있다.
julialang.org/
-툴로 Juno, Julia Pro, Julia Shell(REPL) 등을 사용한다.
juno는 ide와 노트북을 함께 쓸 수 있는 것이 큰 장점이다.
Jula Pro는 디버거를 사용하기 쉽고 용량이 작다.
https://juliacomputing.com/products/juliapro.html
Julia Shell은 Julia의 함수들을 선언하고 사용할 수 있는 shell이다.
https://julialang.org/downloads/
참고 : www.codingworldnews.com/article/view/940
아두이노 / 라즈베리파이 언어들
-아두이노(Arduino)는 마이크로컨트롤러이므로 원하는 기능을 먼저 설정하고 이에 맞는 프로그래밍을 통해 기능을 구현한다. 사용 언어는 C/C++을 사용하고 컴파일러 및 라이브러리는 AVR-GCC을 사용한다.
-IDE로 아두이노 IDE를 사용한다.
-아두이노는 하드웨어 제어를 위한 목적으로 사용되므로 C를 사용하지만, 라즈베리 파이의 경우에는 CPU에 특화된 기기이기 때문에 간략하고 빠르게 구현이 가능한 파이썬을 사용한다.
블록체인
1. C++
-암호화폐에 쓰인다. 대표적으로 비트코인이 있다.
-Bitcoin, Litecoin, Monero, EOS, Stella, Ripple, Qtum등을 개발하는 데 사용된다.
2. C#
-엔터프라이즈급 애플리케이션에 적합하다. 대규모 블록체인 구현을 위해 사용된다. 마이크로소프트의 지원을 받는다.
-STRAT, Neo, IOTA등의 블록체인을 개발하는 데 사용된다.
3.JavaScripts
-블록체인에 주로 사용된다.
-Ethereum, IOTA, NEM, HyperledgerFabric, Neo등의 블록체인 개발에 사용된다.
4.Python
-IBM의 Hyperledger는 Sawtooth에서 구현한 암호화폐인데, 파이썬 용으로 Pythereium도 만들었다.
-Ethereum, HyperledgerFabric, Neo, Steaem등의 블록체인 개발에 사용된다.
5.Solidity
이더리움 네트워크 스마트 계약을 위해 만들어졌다. OOP이며, JS, C++, python의 일부 구문을 가진다.
ERC20이라는 이더리움 스마트 계약의 현재 표준을 설정했다.
https://solidity.readthedocs.io/en/v0.7.0/
ide로는 Remix IDE, EthFiddle를 사용한다.
6.Go
-Ethereum, HyperledgerFabric, GoChain등의 블록체인 개발에 이용된다.
ide로는 LiteIDE, Eclipse, InteliJ등을 사용한다.
https://github.com/visualfc/liteide
https://www.jetbrains.com/idea/
참고 : www.codingworldnews.com/article/view/800
보안
1.C
-기계와 가장 밀접한 언어이기 때문에 시스템의 깊숙한 곳까지 다룰 수가 있다. 데이터를 다루기가 쉽다.
=>바이러스, 해킹 기법들의 경우 H/W나 S/W의 설계상 허점을 이용하는 경우가 많은데, 고급언어로는 구현이 힘들기 때문.
2.C++
-C++는 C에 OOP개념을 탑재한 언어이기 때문에 C와 마찬가지의 이유로 많이 사용된다.
3.파이썬
-앱 개발자나 보안 연구자가 자체 시스템의 보안취약점을 테스트 하는 용도로 쓴다.
-대중적인 해킹 도구를 만들기 쉽기 때문에, 해커와 개발자들 모두 파이썬의 이점을 살리기 좋다.
zdnet.co.kr/view/?no=20181001105943
'TL' 카테고리의 다른 글
20/08/06 TL. 선형회귀 복습 (0) | 2020.08.06 |
---|---|
20/08/05 TL. octave/matlab tutorials(2), zoo 데이터셋 분석 (2) | 2020.08.05 |
20/08/02 TL (0) | 2020.08.02 |
20/07/29 TL NormalEquation (0) | 2020.07.29 |
20/07/28 TL Mutiple variables & Gradient Descent, 현업의 5가지 브랜치 (0) | 2020.07.28 |
소중한 공감 감사합니다