개발 Q&A

제목 음.. 프로그래밍 언어의 변수에 대한 질문입니다.
글쓴이 브레인토스트 작성시각 2016/08/26 19:27:57
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 15147   RSS

얼마전에 어떤분이랑 얘기를 하다가 인터프리터 언어처럼 변수의 자료형을 선언하지 않는

언어들의 변수는 벡터라는 얘기를 들었는데요? 처음듣는얘기라 그게 무슨소린가 해서;;

그분 말로는 어떤형태의 값이든 대입하는대로 자료형이 바뀌는 변수는 벡터라고 하더라구요 ??

잘 이해가 안되서 제가 알고 있는 변수랑 다른 얘기라서 잘 이해가 안갑니다

확실히 그런 개념이 있기나 한건지요? 사실 그분이 믿음직한 사람은 아니라서요;;

그리고 추가적으로 인터프리터 언어처럼 명확한 자료형을 지정하지 않는 변수들은

어떻게 대입하는대로 캐스팅 없이 변수의 값이 메모리에 할당되는지와 그 원리가 궁금합니다 ㅠ

 다음글 키드키즈 같은 사이트 제작에 대해서 질문합니다. (1)
 이전글 phpstorm관련 질문입니다. (4)

댓글

보보 / 2016/08/26 22:34:25 / 추천 0

Very basically, in untyped languages, every reference point to an object that contains both the type and the value. For example var a = 3 points to an instance that contains the value 3 and the type int, if you make a = "bla", the reference is updated to an instance that contains the string "bla" and the type string, the old object is discarded, etc...

출처 : http://programmers.stackexchange.com/questions/125275/how-is-type-checked-in-a-dynamic-language-interpreter-compiler-such-as-javascri

요약하면 새로운 값과 타입을 가진 객체를 계속 할당하기 때문에 캐스팅이 필요없다네요.

var a = 5;

var a = "55";

5는 정수이고 55는 문자열인데 왜 캐스팅없이 대입되느냐 말씀이시면 위 답변이 맞는것 같습니다.

어차피 새로운 객체 만들어서 그 객체에 정보만 기록해두고 할당하면 캐스팅은 필요없죠..

여러가지 이유로 타입체킹이 필요한 언어면.. 묵시적으로 되던 명시적으로 하던 캐스팅을 해줘야겠죠.

김태환 / 2016/08/26 23:47:15 / 추천 0
벡터라는게 수학개념으로 크기와방향이정해진것들을
계산하기위해 쓰는거니깐 그렇게 말씀하신거같네요
php 자바스크립트는 인터프리터언어로 문장 한줄씩
메모리에 로드해서 실행시키기때문에 굳이 자료형 크기를 선언한 필요가 없죠 이미 해석할 크기와방향이 정해져 있기때문에 그안에 있는 변수가 차질할 메모리공간엔 큰의미가없다 그런이야기인거같아요.. 아닌가??ㅋ
테러보이 / 2016/08/27 15:01:49 / 추천 0
벡터는 이미지...... 죄송합니다! ㅋㅋㅋ
한대승(불의회상) / 2016/08/27 16:38:40 / 추천 0

"벡터"라는 단어를 이야기 하신분이 더 정확히 설명해 주실것 같습니다.

직접 질문을 하시는건 어떠신가요?

브레인토스트 / 2016/08/28 00:52:23 / 추천 0

@보보

좋은 답변감사합니다 ㅎㅎ 덕분에 이해가 잘됐습니다.

그 혹시 벡터라는 얘기에 대해서는 어떻게 아시는 부분이 없을까요?? 아시면

그 부분도 질문드립니다 ㅠ

브레인토스트 / 2016/08/28 00:53:29 / 추천 0

@한대승

제가 그 얘기를 듣자마자 물어봤으나 ... 본인도 왜 그런지 잘 모르는 것처럼 어버버 거리셔서 ..ㅋㅋ

브레인토스트 / 2016/08/28 00:54:50 / 추천 0

@김태환

음.. 글쎼요 그렇다고 하더라고 타입이나 크기마다 차지할 메모리의 양이 달라질텐데 그것을 얼마만큼 할당할지

구분하고 그러는 것이..

브레인토스트 / 2016/08/28 00:55:03 / 추천 0

@테러보이

ㅋㅋ 아닙니다.

한대승(불의회상) / 2016/08/28 11:41:45 / 추천 0

@브레인토스트 답변이 그렇다면 벡터는 무시하는걸로.. ^^

차라리 포인터라고 하시지.. ㅋㅋㅋ

kaido / 2016/08/29 09:15:22 / 추천 0

객체언어라고 어디서 새로운 메모리가 나오는것도 아니니.

엄밀히 따지면 메모리에 할당해서 쓰는것이 맞겠죠.

[php는 사용자가 직접 안 해도 중간에 알아서 변환을 시켜줍니다. 그래서 자동으로 보이는 것.]

 

그리고 인터프린터 언어라고 하시면 구체적으로 어떤 애들인지..?

베이직도 ASP도 자료형은 선언 합니다.

브레인토스트 / 2016/08/29 16:20:30 / 추천 0

@kaido

음 JavaScript나 PHP, Python과 같은 언어들입니다 ㅎ