내가 이래서 개발일 하기 싫어 -_-

우리나라의 컴공 교육에 대한 생각이 들게 하는 면접

나 대학때 C 아주 처참하게 낙제했었다. 물론 연애하느라고 정신없어서 클래스 다 쨌던 이유도 있긴 하지만, 시험 전날 C 의 포인터는 그야말로 난공불락 ㅅㅂ 아돈노 장벽이었다. 아직도 잘 모른다 ㅋㅋ 내가 한 언어는 파이썬, 자바, 펄 등이고, 그것도 그냥 유저 혹은 코더 레벨이지 내가 정식으로 프로그래밍 공부한 적도 없고, 까라면 까다보니 배운 거라 뭐.

저 문제 보고 나서 또 느꼈다. 내 다시 태어나면 꼭 C 제대로 공부해보리. 포인터란 말만 나오면 소름이 쭉 돋으니 살겠나.

신랑님은 개발자가 아니다. 펄을 주로 쓰긴 하지만 인프라 엔지니어가 정식 직함이고 제대로 된 개발 일 해본 적 없다. C 도 잘 모른다. 근데 저거 해보라고 시키니까 하네 ㅜㅜ (하지만 대학때 전공이 컴싸였으니까 그렇다고 넘어가자. 대학땐 C 잠깐 했었다니까.

신랑이 문제 내니까 잠깐 생각하더니 쭉 타이프 친 거:

void reverse(char* str)
{
       char holder;
       size_t a,b;

       a=0;
       b=strlen(str);
       b = (b == 0) ? 0 : b-1;

       while (a<b) {
               holder = str[a];
               str[a] = str[b];
               str[b] = holder;
               a++; b--;
       }
}

int main()
{
 char str[] = "abcde";
 reverse(str);
 printf("%s\n", str);
}

나 같으면 파이썬 스트링 라이브러리 찾거나, 걍 맨 끝에서부터 pop() 하면서 새로운 스트링에 집어넣는 그런 공략을 -_;;

글구 본문에서 문제 낸 거에 대한 답 보더니 (지원자가 냈다는 답) 원글 쓰신 분과 비슷한 반응을 보인다. 이건 뭐 기본적인 개념이 탑재 안 되어 있어서 어케 수습이 안 된다고, 저런 애를 어케 고용하겠냐고. 나처럼 C 잘 알지도 못하는 사람이 개념없는 거 딱 눈치챌 정도면 심각하다고.

아아. 콕콕 찔린다. 나 그런 것도 못하는데 -_; 나 그래서 개발 일 안한다고 때려친 거라고 ㅠ.ㅠ 기본도 없는 양파 아흑.

글치만, 좀 변명을 하자면 -

난 내가 할 줄 아는 언어도 사실 깊이 있는 건 모른다. 그냥 시키는 대로 이거 하라고 하면 그거 하는 정도이다. 코드 깨끗하게, 최대한 효율적으로, (내가 아는 한에서) 한다. 그러나 워낙 기초가 부족해서 모자람 참 많이 느낀다. 그렇지만, 있는 코드 보고 시스템이 어케 돌아가는 건지 이해한 다음, 지시사항 내려온 거 보고 아 일케일케일케 하면 되겠구나 계획하고 그대로 실행하는 건 그럭저럭 잘 한다. 내가 모르는 게 뭔지 잘 알기 땜에 그거 물어보고 딱 일 할 만큼 알아내어서 일 끝낸다. 내가 워낙 실력이 없다고 생각하기 때문에 (...생각하는게 아니라 사실이 글타 ㅋㅋ) 고치라고 하면 바로 고치고, 이런 저런 제안을 하면 그것도 아무런 거부감 없이 따라가는 편이다. 이건 장점이라고 생각한다. 실력 없는게 꼬장까지 부리면 어쩌겠는가.

결론: 이따구로 실력없는 나도 10년째 이 바닥에서 입에 풀칠하고 있다. 저 글 보고 뜨끔하셨던 분들, 저랑 같이 손잡고 홧팅 한번 합시다.



by 양파 | 2009/05/20 22:56 | work - IT | 트랙백(4) | 핑백(1) | 덧글(71)

트랙백 주소 : http://theonion.egloos.com/tb/4952356
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Ideal & Real.. at 2009/05/21 01:06

제목 : G사와 N사의 코딩 면접.. + 전산책들...
전세계에서 짱드시고 계신 G사. 한국의 경우에도 회사에 점심에 출장뷔페를 해주는 그 회사에 전에 면접을 본적이 있다. 사실은 그냥 아는 형님이 면접보러오라는 이야길 해서, 나도 넣어보겠어! 라는 단순한 사유였으나.. 운좋게도 제법 올라갔었다. 어차피 시험볼때 쓰는 서약서 덕분에 뭐라고 문제를 밝힐 수준은 못되지만... 면접에서 제법 많이 올라 가봤던 경험으로는.. (물론 경력은 아니고 신입이었다만..) G사에서 필요한 정도는 ACM레벨이라면 스......more

Tracked from redbaron's m.. at 2009/05/21 01:32

제목 : RedBaron의 생각
여기에 나오는 코드를 보는 순간 절망^2가 되었습니다....more

Tracked from 志in寧 at 2009/05/21 09:10

제목 : 아..
내가 이래서 개발일 하기 싫어 -_- 아.. 정말..나는 왜 여기에 있는건지.....more

Tracked from nkokon's me2.. at 2009/05/21 12:30

제목 : nkokon의 생각
내가 이래서 개발일 하기 싫어 -_- ...more

Linked at eNgiNeeRed : 문자열.. at 2009/05/21 13:55

... 리에 뒤집기가 있던가? 가물가물...) 저런거 다 고민하고 만들어야 할 것이다. 안 그러면 갖다 쓰는 사람만 골치 썩을테니 말이다. 그런 의미에서 양파(누)님이 올린 내가 이래서 개발일 하기 싫어 -_-에 간단히 언급한 방법이 가장 좋아보인다. 물론 C적이지 못하기에 C언어로 짜라고 했던 질문의 답은 될 수 없겠지만, 입력 문자열을 처음부터 읽으며 한 "문자" ... more

Commented by Silver at 2009/05/20 23:01
가슴이 따듯해졌습니다 (?)
Commented by 양파 at 2009/05/23 09:09
아이 기뻐요 >.<
Commented by 타누키 at 2009/05/20 23:01
잠수하신다더니 금방 부상하신;;; ㅎㅎ
Commented by 양파 at 2009/05/23 09:10
아흐흐흐 제가 쩜 그렇지 말입니다 ㅋㅋ
Commented by 혜진 at 2009/05/20 23:08
저도 갑자기 마음이 훈훈해 졌습니다. (.... ) 왠지 다행이라고 생각했어요. (엉엉)
Commented by 양파 at 2009/05/23 09:10
뭐 전 저 같은 사람들도 있어야 정말 잘 하시는 분들이 더 뛰어나 보이는게 아닐까, 하는 살신성인 자세로... 으하하;;
Commented by 푸른달팽이 at 2009/05/20 23:13
b--;
Commented by 양파 at 2009/05/23 09:10
^^;;
Commented by 지그프리드 at 2009/05/20 23:18
부끄러운 얘기지만, 우리과 후배 중에도 중소기업에 면접을 갔다가 (자기 딴에는 이런 회사 쯤은 그냥 들어간다 는 마음으로 간거죠), 아주 기본적은 포인터 연산 (& 를 이용해서 주소값을 넘기는 서너줄 짜리 코드) 의 결과를 잘못 말했더랬죠.

면접 보신 분이, "하... 컴공과 나왔다면서 이걸 몰라요? 이걸 모르면서 우리회사를 오려고 했어요?" 라고 하자 후배놈의 대답이 "회사가 신입을 실력을 보고 뽑습니까. 발전가능성을 봐주십시요" 라고 했더라는...

뭐 당근 떨어졌지요. 그 얘기를 무용담이라고 선배들 앞에서 하는데 뭐 저도 면접관과 같이, "하..." 가 나오더군요.
Commented by 양파 at 2009/05/23 09:11
음. 사실 오히려 큰 회사보다 작은 회사가, 실력 시험 칠 땐 더 깐깐할 수 있는데 말이죠. 큰 회사는 '가르쳐서 시킨다' 자세라면, 작은 회사는 '너 이거 할 줄 아냐?' 인 걸 자주 봤어요.

저, 근데 저도 그 '발전 가능성을 보고..' 써먹어봤는데 ㅋㅋㅋ
Commented by 파라미르 at 2009/05/20 23:40
조금 딴소리지만; 신랑분이 짜신 코드가...

와, 코드가 간결하고 에러 처리도 다 하네요. 감탄스럽습니다.
(어떻게 쭉 치는데 저런 코드가 단박에 나오는지...;;)

내공이 팍팍 묻어나온다는 말을 이럴 때 하는 듯.
Commented by 양파 at 2009/05/23 09:11
으흑흑. 전 봐도 까만 건 코드요 하얀 건 스크린이란 것 밖에 ;ㅁ; <== 개발짓으로 먹고 사는 애 맞냐;;
Commented by ydhoney at 2009/05/20 23:42
이힛. 전 그래서 프로그래밍은 모르고 그냥 엔지니어+컨설팅 이빨로 먹고 살아요 =3
Commented by 양파 at 2009/05/23 09:12
헉. 엔지니어 부분만 빼면 저의 롤 모델이세요. (양파도 나름 직함은 엔지니어 -_- 아이 쩍팔려라.)
Commented by highseek at 2009/05/20 23:45
신랑분 소스는.. gcc 스타일이군요 :)
Commented by 양파 at 2009/05/23 09:12
그런가요 ㅡㅡa 글케 말해도 모릅니다만;;
Commented by 페리 at 2009/05/20 23:50
매...매우 따스해졌습니다 ;ㅂ;
전 그냥 컨설팅 갈래요...(먼 달)
Commented by 양파 at 2009/05/23 09:12
저도 누가 컨설팅 시켜주 ;ㅁ;
Commented by 네코 at 2009/05/21 00:13
허허.. abcde 뒤집는 건데도 str 길이가 0일 경우 예외처리까지 되어있네요.
습관이 되어야 할텐데.. ㅠㅠ
Commented by 양파 at 2009/05/23 09:13
그 부분이 그거였나요 -_-; 전 그냥 보내준대로 배껴 올렸;;
Commented by highseek at 2009/05/21 00:29
뭐 제대로 예외처리하려면 str==NULL일 때나 str==0xcccccccc(이른바 매직 넘버..) 일 때도 고려를 해야겠지요.
Commented by 양파 at 2009/05/23 09:13
오호호. 그거 말해줘야겠어요 ㅋㅋ
Commented by fENRIR at 2009/05/21 00:39
아돈노 장벽...;;;;;;;;;
멋지십니다 -_-b
Commented by 양파 at 2009/05/23 09:13
그놈의 아돈노 장벽은 아직도 난공불락이지 말입니다;
Commented by 오린간 at 2009/05/21 01:05
헉....제가 링크된 글에 리플로 달았던 답하고 무진장 비슷하네요.
단지 제껀 전혀 예외처리가 없다고나 할까요 ㅎㅎㅎ
아무튼 저랑 코딩스타일이 굉장히 비슷하신 분이군요.
Commented by 양파 at 2009/05/23 09:14
오 그런가요? +_+ 신기신기. 사실 프로그래머들이 나름 성격이 비슷비슷하다고 하지만 코딩 스타일 보면 또 엄청 다르잖아요. 그런 면에서 아주 신기하다고 생각 +_+
Commented by 개멍 at 2009/05/21 01:49
시스템 프로그래밍 하실게 아니라면 C 배울 필요 없습니다. 파이쏜/자바만 열심히 하셔도 돼요. C 는 프로그래밍 개념의 문제가 아니라 기계에 한 발짝 다가서야 하는 어려움이 있어서 별로 추천하고 싶지 않아요.
... 라기보단 C 제대로 배우고 나면 직업전선에 에로가 꽃필거에요. ㅠ.ㅠ 일은 어려운데 같이 할 사람 수도 적고 등등.
Commented by 양파 at 2009/05/23 09:14
그. 음. 꼭 배울 필요는 없지만 뭔가 늘 찝찝하고, 웅덩이처럼 고인 열등감이란게;;; 음...;;
Commented by highseek at 2009/05/21 02:32
아니, C를 배우는 게 중요한 게 아니라, 스트링처리나 메모리구조 등의 제반지식을 익히는 게 중요한 거 같습니다. C 할 땐 꽤나 신경쓰지만, 고급언어들을 다룰 때 간과하기 쉬운 부분들이죠. 이런 것에 대한 지식 없이 고급언어로 프로그래밍하다가 자칫 잘못해서 메모리 뻑가버리면 해결하기 힘들잖아요. 심지어 웹 프로그래밍을 하다가도, 의외로 시스템 프로그래밍적인 지식들이 필요해지는 경우가 많죠.
Commented by 양파 at 2009/05/23 09:15
네 전 뭐 파이썬 자바 펄 이런 거라서, 스트링 뒤집으라고 하면 바로 스트링 라이브러리부터 뒤질듯 ㅡㅡ? 없음 안하고요 ㅋㅋ

글구 전 개발자 아니거든요 흥.
Commented by 破滅のani君 at 2009/05/21 08:28
역시 프로그래밍은 =_= 언어능력이니... 알고리즘과 지반지식이 주가 되어야 한다고 하신 어떤분의...
말씀이 생각납니다...
Commented by 양파 at 2009/05/23 09:16
아니에요. 저의 뻔뻔함도 꽤나 필요해요 -_; 실력 없는 사람은 어케 먹고 살라고 ㅋㅋ
Commented by 서마이 at 2009/05/21 09:12
ㅋㅋㅋㅋㅋㅋ 화팅! :p
저도 언어 꽝이라 외칩니다..
Commented by 양파 at 2009/05/23 09:16
악 반가워요~~ 맘편하게 살 수 있는 그 날까지 ;ㅁ;
Commented by 따찌야나 at 2009/05/21 09:36
와 저도 C때문에 GG치고 결국 휴학하고 결국 시험 다시 쳤.......; (1학년때 배웠어요 그나마도;...) 10년넘게 안봤더니 지금 거의 기억도 안나긴 하지만;.... 흑 뭔가 파워풀 어쩌고 하면서 C의 장점을 설법하시던 교수님 기억이 아직도 ㅠㅠ ("참 쉽죠?" 라는 느낌)
Commented by 양파 at 2009/05/23 09:17
오오!! 저희 강사님도 그랬어요. 아아 이 아름답고도 간결한 언어~~ 이렇게 쉬울 수가 있다니~~

-_-;;

뭐 사실 연애질 안했으면 이해 좀 했을지도 ;ㅁ;
Commented by 백전백패 at 2009/05/21 09:41
저는 C가 재밌어 보여서 컴퓨터에 본격 입문하긴 했는데요, 그 때는 C가 전부인줄 알았었지만 지금은 '더 편한 언어도 많은데 왜 굳이 그걸 쓰지?' 라는 생각을 합니다. ^^; 기업업무 중 대부분은 데이터 가공해서 DB와 연계하는 부분인데 이런건 굳이 C로 안해도 되거든요. 오히려 다른 언어가 생산성도 더 좋고 유지보수도 쉽죠. (예로 oracle의 pro*c 전처리기를 거쳐 나온 코드를 보면 db 접속에 수십줄, 커서 선언에 수십줄... 전처리기 전의 코드는 C문법에도 안맞고 제어문과도 안맞고... -pro*문법은 c보다는 cobol에 더 잘 어울립니다.- 그러나 vb로 하면 odbc로, java로 하면 jdbc 코드 몇줄이면 끝. 게다가 요즘 java는 jdbc 처리는 프레임웍이 다 해주죠. 개발하고 테스트하고 버그잡고 완료까지 생산성의 차이가 엄청납니다.)
위 문제는 C언어 책이라면 한번쯤 다루는 내용이라 기본기 테스트지요. 자주 쓰이는 테스트로는 정렬도 있구요. 이력서에 C 좀 할 줄 안다고 적어놨다면, 그리고 책 한번 봤다면 다 알만한 내용이죠. 굳이 문제를 낸다는 것은 '그정도는 풀 능력이 돼야 다른 직원들에게 민폐를 덜 끼친다'라는 의미랄까요.
다만, 구직자가 몰리는 몇몇 회사들은 엄청 복잡한 문제를 내고 IQ테스트 하는것을 즐기는 듯도 합니다만... ACM? 그런거 몰라요. 그냥 DB 쿼리 좀 알고 java 날코딩밖에 몰라도 먹고 살 곳은 있더라구요. 능력이 별볼일 없다보니 고생도 하고 돈도 많이 못 벌지만요. ^^;
Commented by kurome at 2009/05/21 21:20
디비야 그렇지만 임베 환경에서 C나 C++이 그 나마 제일 나아요... 디비는 가벼운 SQLite 같은거 쓰구... 요..

일단 어플이라면 이야기가 달라지겠지만 ㅎㅎ
Commented by 양파 at 2009/05/23 09:19
에이. 데터베이스 연결해서 하는 거 뭐 그런 거면 자바보다도 훨씬 코딩 빠른 언어 많은데요 ㅎㅎ

지난 며칠 자바 해보면서, 1.2에서보다는 정말 엄청 많이 달라지고, 빨라지고, 괜찮아졌다는 거 느끼긴 하지만 모국어가 파이썬이라서 그런지 전 스크립팅이 좋아요 ㅜㅜ 프레임워크 딱히 없어도 빠르고요.

아악 근데 DB 쿼리 좀 알고 자바 날코딩 밖에 모르신다니까 갑자기 막막 반가워졌어요 ;ㅁ; 실력 좋은 사람들 때문에 우울해져서 개발 관두고 나왔는데, 제 실력 정도로도 살아남았을 수도 있었겠더라고요 <=== 괜히 분함
Commented by lakie at 2009/05/21 09:42
C 기초 배울때 남들이 10 라인에 하는 코딩을 50라인을 쓰고 있는 저를 보면서 코딩은 하지 말아야겠다 하고 바로 때려쳤던 기억이. 개념을 이해를 잘 못하니 case by case로 다 풀어헤치고 있었거든요. 지금은 그냥 ppt나 만들면서 먹고삽니다. 잘 한듯. (..;;;;)

새는 이야기지만 학교간 교육 커리큘럼 차이를 느꼈던 적이 있었는데요.
서울대 친구는 컴공 아닌데 공대 1학년 일반교양으로 10page 넘는 프레임이 달린 홈페이지를 메모장'만'으로 짜는 숙제를 할 때 서울대 아닌 S대 (그래도 일단은 in 서울) 전산과 다니는 다른 친구는 나모 웹에디터 기본 제공 프레임으로 그림 몇개 붙인 페이지 작성 숙제 하고 있더란. 다들 그런건 아니겠지만 링크하신 석사학위자 상태를 보니 문득 떠오르네요. 우리나라 학교들이 유난히 줄세우기 해서 그런건지 잘 모르겠다는.
Commented by 양파 at 2009/05/23 09:20
아 전 남들은 10라인에 하는 거, 더 짧게 할 거라고 끙끙대다가 결국 제출 안하고 째버리는 인간이 접니다 ㅋㅋ 아아 저도 문서화 하는 걸로 (연봉 많이 받고 -_) 먹고 사는게 꿈인데 말이죠.


Commented by darkjl at 2009/05/21 10:50
더 덥석 ㅜㅜ
Commented by 양파 at 2009/05/23 09:20
저도 덥썩~~ 반가워요 동지~
Commented by fm100 at 2009/05/21 11:25
흠... 석사 졸업이... 저정도까지 무개념일수가 있나요?;;

구지 C로 개발자가 아니더라도 저정도 포인터개념은 프로그래밍 첨 시작하고 한달짜리 수준같은데...ㅡ_ㅡ;;
Commented by 양파 at 2009/05/23 09:20
아잉 -_;;; 무개념자 바로 앞에 두고 글케 말씸하시면 제가 좀 뻘쭘하지 말입니다;;
Commented by bum at 2009/05/21 11:47
뭐. 한때 컴공 전공하다가 내 코드가 교수님이나 다른 똑똑한 사람들 보다 거의 두배가 길다는 걸 알게되고 극복하지 못해서 옆길로 샌 1인으로써는..
프로그래머도 프로그래머지만, 전 QA팀도 대단한거 같습니다. 지금 새 시스템 롤아웃한다고 비즈니스유저로 테스팅팀에 끼어있는데 엄청 짜증나는군요. 100여개의 시나리오와 그의 몇배에 달하는 예상 결과 에러 등등등..
Commented by 양파 at 2009/05/23 09:21
악 저도 QA 팀으로 샌게 바로 그건데요 ㅋㅋ
사실 UAT 쪽 뭐 그렇게 가니까 시스템 이해가 모자라서 더 어렵더라고요. 코딩은 쉽진 않다고는 해도 시스템 기초부터 참가했으면 최소한 어느 정도 이해는 하잖아요. 얼마나 어려운 건지 알고 손놓는 거랑, 이게 뭐가 뭔지도모르고 '테스트 해야 한다'는 압력 느끼는 건 또 다르더군요 -_- 아 뭐 먹고 살려면 쉬운 일이 없지만 말입니다 ;ㅁ;
Commented by jinaida at 2009/05/21 12:45
#include <stdio.h>
#include <string.h>

두줄 추가해야 합니다. ㅎ
Commented by 양파 at 2009/05/23 09:22
아아 제가 빠뜨렸어요 ㅋ
Commented by 푸른나무 at 2009/05/21 12:52
저도 같이 화이팅!! ㅠㅠ
Commented by 양파 at 2009/05/23 09:22
화이팅이에요 ;ㅁ;
Commented by 수문장 at 2009/05/21 14:25
흠... 걍 JAVA인의 마음으로는 말씀하신대로 Stack안에다가 때려 박고 하나씩 pop하면 되지 않을까 하는 생각이... ㄷㄷㄷㄷ 데이타 스트럭쳐 만쉐이~~
Commented by 백전백패 at 2009/05/21 16:34
알고리즘 경영대회에서 뜬금없이 api를 들먹이는 감이 있지만, Java는 new StringBuffer("abcd").reverse().toString() 하면 버전에 관계없이 모두 동작합니다. 참~ 쉽죠잉... ^^
Commented by 써니 at 2009/05/21 17:16
게다가, 자바를 쓰면 2byte 문자(한글이라던가, 히라가나)까지도 알아서 처리해주죠. ㅋ
Commented by 백전백패 at 2009/05/21 19:40
C로 짜신 분들은 면접용으로는 다들 합격점이지만, 한편으로 정상 문자열 안에 \0이 포함되어 있을 경우(애초 문자열 길이를 인수로 함께 받아야지, strlen 쓰면 안되죠)나 다국어 코드셋(멀티바이트)처리에 대한 부분은 빼먹은 분들이 많더군요... ^^ 직접 짜신 분들은 인터넷도 있고 매뉴얼도 있고 무엇보다 시간이 더 많이 있잖습니까. 그만큼 완성도 높은 답이 나왔으면 했습니다. ^^
Commented by 양파 at 2009/05/23 09:23
긍까 말이죠. 저 같으면 reverse 같은 함수를 스트링 라이브러리에서 찾아보고, 라이브러리 쓰면 안 된다면 스택안에 때려박고 팝 하는 거죠. 아훙훙.
Commented at 2009/05/21 18:34
비공개 덧글입니다.
Commented by 양파 at 2009/05/23 09:24
아하하 저 저렇게 열심히 하는 거 한달에 하루이틀이에요 <== 자랑이닷
열심히 했으면 이 경력에 이런 무능력일수가 없답니다. 이런 무능력 아주 힘들다는;
Commented by greenmovie at 2009/05/21 20:42
흠냐... 이건 뭐... 한 마디를 쓸 수가 없네요. 블로깅하신 글이나 댓글이나.. 저의 영역 밖이라서... 그냥 멋져보인다는 말 밖에.ㅋ
Commented by 양파 at 2009/05/23 09:24
아하하 전혀 그렇지 않아요 ㅋㅋㅋ
Commented by kurome at 2009/05/21 21:15
#include <string.h>
int main()
{
char str[] = "abcde";
strrev(str);
printf("%s\n", str);
}
끝 =_ =
Commented by 양파 at 2009/05/23 09:24
오 그런 라이브러리 있군요! 그냥 그거 쓰지 진짜 왜 다들 그랬을가 ㅡㅡ?
Commented by karnell at 2009/05/23 16:47
면접 테스트니까요.

논리력을 보려고 하는거죠.

요즘 왠만한건 거의다 라이브러리가 있다지만, 문제해결능력은 필요하죠 ^-^
Commented by 풍차나라 at 2009/05/21 22:28
이글루스 메인에 올라왔네요.
추카추카 ... ^^;
Commented by 양파 at 2009/05/23 09:24
감사합니다 ^^)/
Commented by ... at 2009/05/21 22:55
#include<string.h>
void reverse(char* str)
{
char *start;
char *end;
char temp;

start = str;
end = str + strlen(str) - 1;

while(start <= end)
{
temp = *start;
*start = *end;
*end = temp;
}

return;
}

Commented by 양파 at 2009/05/23 09:25
글케 써주셔도 저 몰라요 ㅋㅋ C 는 문외한이라는 ㅜㅜ
Commented by ... at 2009/05/21 22:57
while(start <= end)
{
temp = *start;
*start = *end;
*end = temp;

start++;
end--;
}로 수정...
Commented by 양파 at 2009/05/23 09:25
포인터는 모른다니까 ㅋㅋ
Commented by ... at 2009/05/23 18:06
포인터를 사용하는 이유: 인덱스 연산보다 속도가 빠르기 때문입니다.
Commented by highseek at 2009/05/24 00:05
포인터든 인덱스 연산이든 요새 컴파일러들은 어셈블리 단계에서 다 원래 포인터값을 레지스터에 mov 한 후 add와 sub를 사용해 레지스터 값을 조작하여 처리합니다.

str[size-i]=str[i]; 요거 컴파일하면..

mov edx,dword ptr [ebp-0Ch]
sub edx,dword ptr [ebp-4]
mov eax,dword ptr [ebp+8]
add eax,dword ptr [ebp-4]
mov ecx,dword ptr [ebp+8]
mov al,byte ptr [eax]
mov byte ptr [ecx+edx],al

뭐 이런 식으로 되는거죠. eax냐 ecx냐 edx냐는 뭐 그때그때 달라지지만.. 저 형식은 str[size-i]=str[i];가 아니라 *(str+size-i)=*(str+i); 라고 했을 때 역시 똑같이 저런 인스트럭션으로 됩니다. 결국 그게 그거라는 이야기. 포인터가 인덱스 연산보다 속도가 빠른 게 아니라 start++ 같이, 인덱스값을 추출하려고 dword ptr을 mov할 필요 없이 단순히 레지스터에 상수값을 누적시키기만 하면 되는 연산이 속도가 빠른 거지요. 물론 이런 의미로 말씀하신 것이겠지만, '인덱스 연산보다 포인터가 빠르다' 라고 하면 혹시나 오해하시는 분들이 생길 것 같네요;;

요새는 가독성의 문제 때문에 포인터보다 인덱스 연산을 권장합니다.

참고로 요샌 컴파일러들이 좋아져서, 컴파일러의 어셈블리 최적화가 사람이 하는 것보다 나을 때도 종종 있지요.

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶