아무거나 강좌 1 : 배열과 객체

in #kr-dev9 years ago (edited)

강좌가 잘 올라오지 않아서, 제가 간단하게 시작해 보려고 합니다.
자바스크립트, 파이선, 자바를 비교해 가면서, 혼동되기 쉬운 점들을 긁어 보도록 하지요.

비단순형 자료구조에 대해서 이야기 해보려고 합니다.

List : 원소들이 나열되어있는 추상 자료 구조
- 배열, Array List, Linked List 등등

Map : (Key, value) 의 자료구조
- Object, Dictionary

자료형 중에 이 두가지가 가장 많이 쓰입니다.
지구상에 있는 어떠한 복잡한 데이터도 이 두가지를 이용하면 디지털화 할 수 있습니다.
JSON 문서는 이 두가지를 사용합니다.


Object

javascript

javascript 의 오브젝트는 다음과 같이 만듧니다.
그 안의 멤버는 coin.eth.name 로 접근 가능합니다.
타입은 object 입니다.

coin_eth = { 'name': 'eth', 'value': 200};
coin_eth.name      // 'eth'
typeof coin_eth    // 'object'

python

파이선에서도 똑같은 코드를 사용할 수 있습니다.
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'

Java

자바는 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, Array

javascript, python

자바스크립트, 파이선 배열은 모양이 같습니다.
원소를 참조하는 방법도 같습니다.

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

Java

자바에서는 {} 가 쓰이네요... 어색한 느낌은 뭘까요?
[ ] 를 사용하는데 익숙해지면 [ ] 라고 써놓고 오류를 눈치채지 못할 수도 있습니다.

int[] list = { 1, 2, 3, 4};

이형 원소를 넣으려면 매우 복잡합니다.
사실 자바에서는 이러한 배열을 쓰지 않고 java.util.List 라이브러리를 사용합니다.

List<Integer> list = new ArrayList<Integer>();

Conclusion

List, Dict 는 가장 많이 쓰이는 자료형입니다.
이와 관련해서는 흥미로운 내용들이 무수히 많습니다.
그리고 이 자료형들은 함수형 프로그래밍과 관련이 있으니, 같이 공부하면 좋을 것 같습니다.

다음에는 Naming(명명법)에 대해서...

Sort:  

지난번에 거래소 데이터 수집하려고 보니까 cloudflare사용하는데는 브라우저 체크시에 자바스크립트 pass = [ 1, 2, 3] + [ 4, 5];와 같은 랜덤 식으로 패스값을 계산하게 해두었더군여. 그거 넘기게하려고 애 좀 먹었던 기억이 납니다. ㅎㅎ

[1,2] + [4,5] 하면 '1, 23, 4' 이라는 스트링이 나오네요..
[1,2].toString() + [4,5].toString() 이 호출 되는가 봅니다.

http://jsbin.com/kolokiwalu/1/edit?html,css,js,console,output

정정합니당 . 요런식으로 패쓰값을 구합니다. 결국 0과 1의 더하기인것 같습니다.

sOkoLqO.YHQXQiZxOW-=+((!+[]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]))

딱봐도 이해가 안가네요~^^

강좌 잘 읽었어요
각 언어별 차이점을 비교해 볼 수 있도록 잘 써 주신거 같아요
자바는 알겠는데 파이썬은 처음 봐요 ㅎ

파이선을 쓰다 보면 자바를 더 잘 이해할 수 있습니다.

좋은글 감사합니다.
저도 프로젝트 오일러 올려야 하는데 요즘 회사 일이 바쁘다보니 짬이 안나넨요...

주업이 우선이지요.... ^^

전 파이썬이 참 어색한데 .... 자바가 어색하시군요 ...ㅎ
언어는 해도해도 공부가 끝이 없는거같습니다.

둘다 잘 하진 못하지만 어색한 정도는 아닙니다.

정적 언어와 동적 언어는 각기 장단점이 있고,
두가지를 다 이해하는 것이 중요한 포인트입니다.

도메인을 공부하느냐 언어를 공부하느냐
도메인은 쉽게 변하지만 언어는 잘 변하지 않지요.

jQuery, Augular, React, Vue 등 자바스크립트 프레임워크는 다양하게 변해도
자바스크립트를 잘 이해하고 있다면 쉽게 적응할 수 있습니다.
그리고 언어를 이해하지 않고는 프레임워크를 잘 쓰기란 쉽지 않습니다.

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.083
BTC 60737.85
ETH 1558.46
USDT 1.00
SBD 0.50