강좌가 잘 올라오지 않아서, 제가 간단하게 시작해 보려고 합니다.
자바스크립트, 파이선, 자바를 비교해 가면서, 혼동되기 쉬운 점들을 긁어 보도록 하지요.
비단순형 자료구조에 대해서 이야기 해보려고 합니다.
List : 원소들이 나열되어있는 추상 자료 구조
- 배열, Array List, Linked List 등등
Map : (Key, value) 의 자료구조
- Object, Dictionary
자료형 중에 이 두가지가 가장 많이 쓰입니다.
지구상에 있는 어떠한 복잡한 데이터도 이 두가지를 이용하면 디지털화 할 수 있습니다.
JSON 문서는 이 두가지를 사용합니다.
javascript 의 오브젝트는 다음과 같이 만듧니다.
그 안의 멤버는 coin.eth.name 로 접근 가능합니다.
타입은 object 입니다.
coin_eth = { 'name': 'eth', 'value': 200};
coin_eth.name // 'eth'
typeof coin_eth // 'object'
파이선에서도 똑같은 코드를 사용할 수 있습니다.
coin_eth['name'] 로 접근합니다.
타입은 dict 입니다. (사전형이라고 합니다)
coin_eth = { 'name': 'eth', 'value': 200};
coin_eth['name'] # 'eth'
type(coin_eth) # <class'dict'>
파이선에서 . 을 쓰고 싶으면 클래스를 만들어야 합니다.
class Coin:
def __init__(self, name, value):
self.name = name
self.value = value
coin_eth = Coin('eth', 200)
coin_eth.name # 'eth'
자바는 class 의 인스턴스로 Object 가 존재합니다.
class Coin {
Coin(String name, int value) {
this.name = name;
this.value = value;
}
}
Coin coin_eth = Coin("eth", 200);
자바스크립트와 비교해 볼까요?
coin_eth = { 'name': 'eth', 'value': 200};
자바는 타이핑이 참 많은 언어입니다.
개발도구의 자동완성이 없다면 손목이 무지 아프겠지요?
만일 market 이라는 변수를 추가하고 싶다면,
자바에서는 클래스 파일을 먼저 고쳐야 합니다.
자바스크립트에서는 'market': 'coinone' 을 삽입하면 끝
세가지 언어의 Object 에 대해서 알아 보았습니다.
[], {} 가 있는 언어가 참 편합니다.
자바스크립트, 파이선 배열은 모양이 같습니다.
원소를 참조하는 방법도 같습니다.
list = [1,2,3]
list[1] // 2
list = [[1,2], 3, 4, [5, 6], 'a']
list.length // 5 javascript
len(list) # 5 python
이형 원소들도 무리없이 하나의 리스트에 들어갑니다.
list 를 합치는 경우
[ 1, 2, 3].concat([ 4, 5]) // [ 1, 2, 3, 4, 5] javascript
[ 1, 2, 3] + [ 4, 5] # [ 1, 2, 3, 4, 5 ] python
python 에서는 이런 것도 가능합니다.
[a, b] = [1, 2] # a = 1, b = 2 python
자바스크립트에서는 array spread 표현을 제공하는데 아래 내용을 참고하세요.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator
자바에서는 {} 가 쓰이네요... 어색한 느낌은 뭘까요?
[ ] 를 사용하는데 익숙해지면 [ ] 라고 써놓고 오류를 눈치채지 못할 수도 있습니다.
int[] list = { 1, 2, 3, 4};
이형 원소를 넣으려면 매우 복잡합니다.
사실 자바에서는 이러한 배열을 쓰지 않고 java.util.List 라이브러리를 사용합니다.
List<Integer> list = new ArrayList<Integer>();
List, Dict 는 가장 많이 쓰이는 자료형입니다.
이와 관련해서는 흥미로운 내용들이 무수히 많습니다.
그리고 이 자료형들은 함수형 프로그래밍과 관련이 있으니, 같이 공부하면 좋을 것 같습니다.
다음에는 Naming(명명법)에 대해서...