새소식

인기 검색어

TL

20/08/04 TL | RN 참고 블로그, Octave tutorials, 분야별 프로그래밍 언어들

  • -

오늘 할 일

프로그래밍 언어 조사

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/


3.R Programming
-R은 데이터 분석 및 조작 분야에 많이 사용된다. 통계 분야에 많이 사용되며 R을 이용해 수학 기호, 플롯, 공식 등을 구할 수 있다.
-머신러닝에도 사용이 가능하다. G모델, Class, TM, RODBC 등 AI 개발에 활용할 수 있는 다양한 패키지를 제공한다.

www.lisp-lang.org/


4.Prolog
-논리형 프로그래밍 언어로 효과적인 패턴 매칭, 트리 기반 데이터 구조화 및 자동 역추적 특징을 가진다.
=>강력하고 유연한 프로그래밍 프레임 워크를 제공한다. 머신러닝에 이상적인 언어.
-의료 프로젝트, 전문가 AI 시스템 설계, 계산 언어학, 자연어 처리 등에 사용된다.

www.swi-prolog.org/


5.JAVA
-사용이 간편하고 디버깅이 쉽다. 패키지 서비스, 대규모 프로젝트와의 단순화된 작업, 데이터의 그래픽 표현 및 사용자 인터랙션 등 다양한 이점을 제공한다.
-표준 위젠 툴킷인 SWT와 스윙이 통합되어 있어서 그래픽과 인터페이스를 표현할 수 있다.
-검색 알고리즘, 인공 신경망, 유전자 프로그래밍 등 다양한 분야에서 사용된다.

www.java.com/ko/


6.C++
-속도가 빨라 민감한 인공지능 프로젝트에 유용하다. OOP 원칙도 가지고 있어 AI프로그램에 적합하다.
=>머신러닝, 딥러닝 라이브러리의 상당 부분은 C/C++로 작성되어 있다. API를 제공하며, 다른 프로그래밍 언어에 래퍼(wrapper)를 제공한다.
-템플릿이 안전하고 API를 일반화하는 데 적합하기 때문에 단순하다. 즉, 시간과 성능을 통제할 수 있다.
-C++를 사용하는 대표적인 응용프로그램에는 마이크로소프트 윈도우, 맥 OS, 어도비 포토샵, 마야 3D 소프트웨어, CAD, Mozilla Firefox 등이 있다.

www.isocpp.org/


7.Julia
-특별한 분리 컴파일 없이 좋은 성능을 가진다. 수치 분석과 연산 과학을 다룬다.
-수학에 기반을 둬, 데이터 분석가들이 많이 사용한다. 연구 논문에서 알고리즘을 번역해 손실 없이 코드화 하기가 용이하다. 모델 리스크를 줄이고, 안정성을 향상시킬 수 있다.
-오픈소스 언어로 IBM, Intel, NVIDIA, ARM을 포함해 거의 모든 종류의 하드웨어에서 실행 가능하다.
-Matlab, 파이썬, R의 친숙한 구문과 C++의 빠른 속도로 결함할 수 있어 개발자들이 한가지 프로그래밍 언어로 모델을 변환 할 필요가 없어진다. 이를 통해 오류를 줄이고, 시간과 비용을 줄일 수 있다.

www.julialang.org/

-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 = 3.14159265358979 

format short 

-> 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와 노트북을 함께 쓸 수 있는 것이 큰 장점이다.

https://junolab.org/ 

 

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에 특화된 기기이기 때문에 간략하고 빠르게 구현이 가능한 파이썬을 사용한다.

 

참고 : ko.wikipedia.org/wiki/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D#cite_note-AVR-gcc-2

 

블록체인

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를 사용한다.

https://remix.ethereum.org

https://ethfiddle.com/


6.Go
-Ethereum, HyperledgerFabric, GoChain등의 블록체인 개발에 이용된다.

https://golang.org/

 

ide로는 LiteIDE, Eclipse, InteliJ등을 사용한다.

https://github.com/visualfc/liteide

https://www.eclipse.org/

https://www.jetbrains.com/idea/

 

참고 : www.codingworldnews.com/article/view/800

joind.io/market/id/440

 


보안

1.C
-기계와 가장 밀접한 언어이기 때문에 시스템의 깊숙한 곳까지 다룰 수가 있다. 데이터를 다루기가 쉽다.
=>바이러스, 해킹 기법들의 경우 H/W나 S/W의 설계상 허점을 이용하는 경우가 많은데, 고급언어로는 구현이 힘들기 때문.

2.C++
-C++는 C에 OOP개념을 탑재한 언어이기 때문에 C와 마찬가지의 이유로 많이 사용된다.

3.파이썬
-앱 개발자나 보안 연구자가 자체 시스템의 보안취약점을 테스트 하는 용도로 쓴다.
-대중적인 해킹 도구를 만들기 쉽기 때문에, 해커와 개발자들 모두 파이썬의 이점을 살리기 좋다.

 

kldp.org/node/157923

zdnet.co.kr/view/?no=20181001105943

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.