비주얼 베이직의 단점

비주얼 베이직으로 프로그램 개발하는데…

매우 난감한 상황이 발생한다.

비주엘 베이직에서는, 대부분의 프로그래밍 언어가 그렇듯, 값을 전달할 때 참조에 의해 전달하는 것과 값 자체로 전달하는 두가지 방법을 사용할 수 있다.

문제는, 그럼에도 불구하고 “포인터”라는 개념이 없다는 것이다.

그 결과, = 연산자를 사용할 때, 이게 도대체 값으로 넘어가는건지 주소로 넘어가는건지 알 수 없게 되어 버리는 경우가 많다.

그리고 당연히 메모리 참조 오류가 발생하게 된다.

답답하다. -_-

그 다음으로 답답한건 배열의 선언과 사용이다.

배열은 다음과 같이 선언한다.

dim arr(10) as integer

자, 질문이다. 위와 같이 선언하면 사용할 수 있는 배열의 크기는 모두 몇칸일까?

정답은 “11”칸이다. 인덱스가 0부터 10까지 갈 수 있다. 내가 C에 익숙해서 그런건지는 모르겠지만, 저 사소한 차이가 개발에 아주 큰 어려움을 주고 있다. 대체 0부터 어디까지 세야 하는건지 쓸 때마다 헷갈린다.

딱 10개만 쓰고 싶으면 그냥 1부터 시작해서 쓰라고 “책”에는 나와 있지만, 숫자는 0부터 시작하는 것이 정석이다. -_-

생각해보니, 내가 만든 배열이야 0부터 쓰든 1부터 쓰든 문제가 없지만, 남이 쓴거 가져다 쓸 때는 골치아파지는 문제가 생길 수도 있다. 그 사람이 1부터 시작했는데 내가 0부터 시작하기로 한다거나, 그 사람이 9까지 쓰기로 했는데 내가 10까지 쓰기로 한다거나 하면 엉뚱한 값이 들어와 버릴 수도 있다. 즉, 애초에 0부터 10까지 11칸을 쓰기로 하는 것이 가장 정확하다는 뜻이다.

MS에서…C랑 다른 무언가를 만들려고 하다가 좀 삽질한 듯 싶다.

셋째로…

조건절 평가할 때 전부 다 계산해보고 한다. 이건 단점인지 장점인지 모르겠지만 불편하다. 예를들어

if Not (objData is nothing) and objData.someFlag then

someFunction(objData)

end if

이렇게 쓰면 objData가 nothing(이라고 쓰고 Null이라고 읽는다) 인 경우에는 오류가 발생한다. 왜냐하면 objData.someFlag는 아직 정의되지도 않은 객체의 속성이기 때문에 객체 참조 오류가 나오는 것이다. 하지만 이미 objData가 nothing이라는 조건이 만족되었기 때문에 그냥 넘어가면 안되는 걸까? 끝까지 평가를 다 해봐야 아나…그것도 and로 이어진 조건들인데. 똑똑하지 못한 것 같다.

*추가 : and 대신에 andAlso 연산자를 쓰면 앞에서 조건이 만족되면 뒤쪽은 계산하지 않는다.

이건 뭔소리여…


http://www.segye.com/Articles/News/Politics/Article.asp?aid=20090724002915&ctg1=01&ctg2=00&subctg1=01&subctg2=00&cid=0101010100000

지만원씨가 이렇게 말했다고 한다.




왜 그렇게 생각하는지 그 근거를 듣고 싶다. 아니, 그보다는 고용이 안정되어 망한 기업의 사례가 있는지 알고 싶다. 진심이다. 지구상에 그런 기업이 있었다는 것인가. (망했다면 지금은 없을테니까 과거형으로 쓰는 것이 맞다.)

99%에서 멈추는

어떤 일을 할 때는, 언제나 99%에서 멈추는 것이 가장 짜증난다. 완성 직전에 정체된 것이 오히려 아예 안되는 것보다 더 답답하다. 포기할 수도 없고 계속할 수도 없는 그런 상황. 지금…

금요일 저녁인데, 오늘까지 해야 했던 거의 모든 일들을 끝마쳤다. 박막 샘플 제작도 모두 완료했고 챔버 내부의 실험장비들 설치도 완료했다. 그리고 퇴근시간이 되었다. 그런데…

다음주 월요일부터 사용해야 하는 실험 결과 분석 프로그램이 오류를 발산하고 있다. 물론 원래부터 오류는 있었다. 단지 이 오류를 잡는것이 쉬울 것이라 생각하고 지금까지 미루어 두었을 뿐이다. 하지만…

지금 이 순간, 가장 짜증나는 녀석이 되었다. 지난 수개월동안 나는 무엇을 했는가. 생각해보면 거의 매일 야근하느라 정신없이 지나갔다. 이제 이 프로그램이 원하는대로 작동하기만 퇴근도 하고 주말도 잘 보낼 수 있다. 그래서…

오늘도 야근이다. 그것이 진실이다.

친구따라 생활점검

체력 및 건강 – 거의 매일 1시간씩 걷기+달리기 및 근육 운동 중. 하루의 10시간 이상을 먼지가 거의 떠다니지 않는 청정실에서 일하는데 비염이 왜 심해지는지는 여전히 미스테리. (10시간 이상 일한다는 점은 그냥 그러려니 한다.)

식사 – 살빼느라 밥을 먹고싶지 않지만 점심과 저녁은 어쩔 수 없이 외식. 아침은 유동식과 우유 또는 물로 해결함.

연구 – “오늘의 실험일지” 같은 글을 참고해 보면, 그럭저럭 나쁘지 않게 잘 되는 중이다. 박막 만드는 기술과 비주얼 베이직 프로그래밍 기술이 상승중이다. 레이저를 최대한 보지 않도록 주의하는 중이다. 개인적인 연구는 아직 못하고 있다.

친구 – 먹는건가요…-_-; 광주에 아는 사람이 세명 있는데, 한명은 서울대 다니고 한명은 강원도에 가 있고 한명은 미국으로 어학연수를 떠난 상태다. 혼자 노는중…(원래 그랬지만.)

티스토리의 추천태그기능

티스토리에서 글을 쓰다보면 추천 태그 기능이 있다.

그런데 이 추천 태그기능을 꺼버릴 수 있었으면 좋겠다.

가령, 나는 “나노”라는 것에 대해 태그를 달고 싶은데 아무생각없이 “나노” 까지만 치고서 엔터를 누르면 “나노하” 라든가 “나노2” 라든가 하는 것들이 태그로 달린다.

요점은, 내가 입력한 상태에서 화살표 키로 다른 태그를 지정하지 않았다면, 엔터를 쳤을 때 내가 입력한 것 까지만 입력되어야 한다는 것이다.

태그는 코드가 아니다. 자동완성될 필요가 없다. 도대체 왜 태그에 InteliSense를 붙이는 것인가. 왜…

나노미터급 회뜨기

어제랑 오늘은 12시간동안 실험실에서 회를 떴다.

재료는 성분을 잘 모르는 폴리머로 된 것과 순수한 탄소로 된 것이다.

두께는 10 나노미터부터 1마이크로미터까지 다양하다.

근데 이거 완전 쌩 노가다 작업이다. 집중력을 발휘해야만 성공할 수 있다.

가로세로 각 25밀리미터 크기의 박막에 두께가 10나노미터니까, 가령 1센치미터짜리 판을 같은 비율로 만든다면 250미터정도 되는 판이 된다. 두께가 너무 얇다는 것이 문제다. 이놈을 유리 기판에서 떼어내서 다른 기판에 옮겨 붙여야 하는데, 그게 바로 테크닉이다. (자세한건 영업비밀. -_-;)

이제 10나노미터까지는 해봤고…

3주쯤 후에는 1나노미터를 도전해 보라고 시킬 것 같다. 이건 밤새 도전해야 할텐데…

할줄 아는게 너무 많아도 곤란하다.

사용한 과학적 원리 또는 기구

표면장력

사이폰

원심력

중력

유체역학

이런걸 왜 썼더라.

추가 : 오늘 깨달은 건데, 순수한 물(증류수)은 피부에 안좋은 것 같다. 증류수에 젖은 손을 말렸더니 피부가 하얗게 튼다.

친구들의 위치

문득, 내 친구들은 어디에 사는지 정리해 보고 싶어졌다. 물론 여기에 언급하는 친구들은 내가 그냥 일방적으로 친구라고 생각하는 친구들이다. 대부분은 나를 친구로 생각하고 있겠지만, 나를 친구로 생각하지 않더라도 어쩔 수 없다.

2009년 7월 현재.

서울 – 많음

대전 – 많음

수원 – 1명

광주 – 2명

제주 – 1명

부산 – 2명

청주 – 1명

춘천 – 1명

포항 – 1명

중국 – 1명

미국 – 2명

독일 – 1명

호주 – 1명 (이친구는 연락 두절…-_-;)

음…

물론 그렇다고 친구가 열 몇명 정도밖에 없는건 아니고, 지금 생각나는 친구가 이정도.

공부의 목적

내가 요즘들어서 공부를 왜 하고 있는지 5분동안 고민을 해 보았는데, 그럭저럭 만족할만한 답을 얻었다.

난 남들이 아직까지 한번도 생각해 보지 않은 무언가를 생각해 내고 싶어한다.

그런데 남들이 아직까지 한번도 생각해 보지 않은 무언가를 생각해 내려면 우선 그게 남들이 한건지 안한건지 알아내야 하고, 따라서 남들이 뭘 했는지 열심히 공부할 필요가 있다.

지금까지는 내가 생각한건 이미 남들도 많이 생각하고 있었다. (그것도 수천년 전이나 수백년 전부터…)

다른건 때려 치고 물리나 해야겠다.