C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[12470] C 언어 입문서 제작에 대한 의견 좀 ㅡ.ㅡ;;
류종택 [ryujt] 2261 읽음    2006-12-04 23:53
현재 완전 초보를 목표로 동영상 녹화를 들어가려고 자료 준비 중입니다.

그런데,
한 가지 고민스러운 것은
제가 보편적인 C 스타일을 고의적으로 피한 부분들입니다.

예를 들면,

    i++   -->   i = i + 1;
    i += 5;  -->  i = i + 5;
   int i = 0;  --> int i;   i = 0;

과 같은 것들이 있습니다.

그다지 문제가될 거 같지는 않지만,
하다가 보니 혼용하게 되어서 더 걱정이네요.
그래도, 프로그래밍을 처음 접하는 사람에게 오른쪽이 직관적이지 않을 까 하는 겁니다.

여러분의 생각은 어떠신지 ㅡ.ㅡa
TohnoLyn [tohnokanna]   2006-12-04 23:55 X
음...
i++   -->   i = i + 1;  같은 단항연산자는... for루프나 아니면 포인터증가 등의 특정상황에서만 사용하는것이 좋을것같고..

i += 5;  -->  i = i + 5; 같은 연산자는 아예 배제하는편이 =_=; 가독성이 심하게떨어집니다

int i = 0;  --> int i;   i = 0; 는 어느정도 자유롭게 사용해도 상관없다고 생각해요.
류종택 [ryujt]   2006-12-05 00:00 X
오!!  쾌속 답변!!
저도이번 교재에  i++과 같은 경우에는 루프문에서만 사용하고 있습니다.
(왠지 정답 맞춘 학생 같은 기분이 ^^;)
포인터에 대해서는 아직 교재를 준비 못했어요 ㅡ.ㅡ;;
의견 감사합니다 ^^*
TohnoLyn [tohnokanna]   2006-12-05 00:02 X
감사하면 다음 세미나도 좋은정보좀 ^^;
정성훈.해미 [sage5nor]   2006-12-05 00:19 X
C언어의 매력은 여러가지가 있겄지만..
그 중에서 젤 관심이 갔었던 그리고 비상한 아이디어의 산물이었던 것이

기호들의 조합이었습니다.

아마 저만의 생각이 아니라면
위의 예제중 오른쪽 표현은 식상함을 불러 일으킬 수 있을 것입니다.

단순히 처음 몆페이지에서만 사용하고 다음에는 같은 용도의 코드에
축약 연산자를 사용한다면

'어? 이렇게 코딩하는 방법도 있구나~'

더 흥미를 유도할 수 있을 것입니다.

내가 만든 소스가 처음으로 한 송이 장미로 변했을 때
                 저는 세상을 다 가진 기분이었습니다.
정성훈.해미 [sage5nor]   2006-12-05 00:22 X
저만 그런가 모르겠는데요..ㅋㅋ

기호를 자유자제로 사용할 수 있다는 것..

C언어를 사용하는 특권이 아닌가 합니다.
류종택 [ryujt]   2006-12-05 00:29 X
저는 좀 다른 생각입니다.
(웬지 안티가 되는 듯해서 ㅡ.ㅡ;;)

지훈군이 저에게 술마시면서
    "형 전산학의 목표가 몬지 알아?"
    "몬데?"
    "누구나 다 프로그래밍을 할 수 있도록 하는 것이야"
모 정확한 대사는 기억이 나지 않습니다만,
저는 짧은 소스보다는 직관적이고 좀더 이해하기 쉬운 코드를 선호합니다.

처음에 프로그래밍을 접할 때는
한 줄이라도 적게 쓰려고 노력했었고,
교수님들도 그것이 좋다고 강의까지 하시더군요.

자유로운 표현 능력 자체가 문제라고 보지는 않습니다만,
꼭 입문자가 아니더라도
위의 제시한 문법을 두고 이야기하는 것은 아니지만서도
짧은 라인과 문자수가 단순함을 대표하는 것이 아니라고 보며,

역시 알고리즘과 수학의 아름다움은 단순함에 있다고 생각합니다.
그리고, 그 단순함은 누구나 쉽게 이해할 수 있는 모양새이어야 한다고 생각합니다.
TohnoLyn [tohnokanna]   2006-12-05 00:38 X
어차피 i += 5나 i = i + 5나 같은 어셈블리를 생성하는 이상은...
알기쉽고 보기쉬운게 좋다고생각함
TohnoLyn [tohnokanna]   2006-12-05 00:41 X
축약된 C 전용의 기호들은 처음 접하는 사람에게 괜히 복잡해보일수도 있다고 생각..
TohnoLyn [tohnokanna]   2006-12-05 00:43 X
축약된 기호를 사용할수 있다는 '특권' 이 있다지만 같은 역할을 하는 기호 여러개를 외워야 하는 '의무' 에 비하면 너무 미미한것이 아닐지 ㅡ.ㅡ
김상구.패패루 [peperu]   2006-12-05 00:48 X
바뜨 그러나... C++ Builder를 사용함에 있어서는 위의 연산자들의 차이점들은 한번쯤 짚고 넘어가야 할 듯 한데요...

예를 들어 int i = 0;  --> int i;   i = 0; 이건 분명 다르지 않습니까... 성능에 차이가 있습니다. 보통은 무시해도 상관 없지만서도...

또한 += 연산자등도... 빌더의 프라퍼티에선 허용하지 않죠. 왜 허용되지 않는지를 설명하려면 어쩔 수 없이 다뤄야 하지 않을까 싶네요.

++연산같은 경우 순서문제는 차치하더라도 성능상 유리하다정도는... 짚고 넘어가는게 좋지 않나 싶습니다.

그러나 한가지 사족을 덧붙인다면 위의 문제들은 본문의 '구성'으로 어느정도는 짚어줄 수 있다고 봅니다. 큰 줄기는 간단 명확하게 하면서도 실력이되면 나중에 이부분은 점검해봐라... 정도로... 부록에 지금까지 짚어준 '참고'들만 따로 인덱스를 만들어 주는 방법도 있고... 공부 끝나고 어느정도 익숙해지면 한단계 더 나아가기 위해 봐야 할 것들을 알려주는 것...

대개 초보들의 가장 큰 어려움은 자신이 뭘 모르는지 모른다는거고... 이 부분을 도와줄 수 있다면 초보를 위한 책으로써는 최고가 아닐까 싶네요. ^^
류종택 [ryujt]   2006-12-05 00:53 X
패패루님 생각은 저와 별로 다르지 않습니다.
저도 위의 문법만을 염두하고 이야기를 한 것은 아니고요.

여하튼 축약된 기호화?는
그 자체가 매력이 있다고 생각하지 않는다는 것이죠.

이 교재 앞에는 몇 가지 추가하려고 하는데,

그 중에 하나가 강좌 대상이라던가
그리고, 공부방법으로 강좌를 보고 나서
반드시 체계적인 서적을 통해서 공부하라는 것을 이미 추가하였고,

몇 가지 더 조언을 달까 하다가 너무 잔소리만 많아지는 것 같아서 참고 있습니다 ㅡ.ㅡ;;
TohnoLyn [tohnokanna]   2006-12-05 02:14 X
페페루 // 프로퍼티나 성능까지 운운하는것은 류종택님의 강의대상인 '완전초보' 에게는 필요없는 내용이 아닐까 싶은데요 `-`;

나중에 활용강좌 낼때 필요할듯.
지금 하시는건 C 강좌지 C++빌더 강좌가 아니니까요
TohnoLyn [tohnokanna]   2006-12-05 05:40 X
페페루 // 정말 심심해서 (...) 테스트 해봤습니다만..
터보 C++빌더 2006 기준으로
int i=0; 과 int i; i=0;
은 양쪽 모두
xor eax,eax
mov [ebp-$04],eax
이란 코드를

i = i + 5와 i += 5 는 양쪽모두
add dword ptr [ebp-$04],$05
라는 100% 동일한 코드를 생성합니다.

컴파일러에 따라 다른 코드를 생성 할 수도 있겠지만.. 적어도 성능차이가 있다는말은 맞지 않을것 같습니다.
김상구.패패루 [peperu]   2006-12-05 09:33 X
음... 별로 제가 글 쓴 의도와는 상관 없는 부분에 너무 집착하시는군요.

결국 척 보면 카피컨스트럭터를 사용하는 것과 그렇지 않은것의 차이를 지적한 것이지 않습니까... 당연히 int와 같은 기본형들은 컴파일러의 최적화 여부에 따라 같은 코드가 만들어질 수도 있고 그렇지 않을수도 있을겁니다. 그렇다면 int와 같이 단순한 경우 말고 멤버 하나짜리 class의 경우로 확장해서 생각해 보시면 될 것 아닙니까...

이걸 테스트 해 보세요... 어셈코드도 확인해 보시구요.

꼭 이렇게 친절한 설명이 필요한건지 모르겠군요.

class TMyClass
{
public:
  int v;
  TMyClass() {v=0;}
  TMyClass(int value) : v(value) {}
  TMyClass & operator = (int rhs) {v = rhs;}
};

int main(int argc, char* argv[])
{
  TMyClass a; a = 10;
  TMyClass b = 20;
  TMyClass c(30);
  return 0;
}
남병철.레조 [lezo]   2006-12-05 09:50 X
풀어서 사용하는것과 그렇지 않은것... 전 상관없다고 생각됩니다.
문제는 그 내부의 예제들이나 설명을 얼마나 쉽게 했는지가 중요하지 않을까요?
특히 초보이니 만큼 제목도 초보자를 위해 속 시원하게 정하시는게...
예를들면.. "C 한방이면 된다!" ^^;
김상구.패패루 [peperu]   2006-12-05 09:53 X
C에선 물론 클래스 코드는 안되겠죠. 그치만 그런 경우 역시
int a; a=10;
int b; b=20;
이런 코드도 안됩니다. 컴파일 에러나죠.
최준호.스페로 [sparrow]   2006-12-05 10:00 X
패패루님 예제가 죽이네요.. C에선 변수 선언후 실행문이 있어야 하므로.. 위와 같은것은 구지 int a, b; 를 먼저 선언 하고 아래서 10, 20으로 세팅 해야 합니다. 그래서 가끔 선언과 동시에 변수 값을 세팅 해야만 보기 좋은 경우도 있습니다. C++이 아무대서나 변수 선언할수 잇는점이 참 좋으면서도 또 어지럽죠.. 갑자기 태어나는 지역 변수들....
반영재 [ycom]   2006-12-05 11:17 X
류종택님의 열정이 부럽습니다. Dos시절때 저도 꼭! 책 집필해서 내 이름을 남기고 싶었었는데...아쉬운데로 프로그램세계 라는 잡지책에 제 이름으로 기고한적은 있었지요^^;
아쉽게도 지금은 그 잡지책이 사라진지 오래지만...

다시 예전과같은 열정이 되살아 났으면 좋겠습니다.
종택님 홧팅!!!!!!
류종택 [ryujt]   2006-12-05 16:00 X
반영재님 감사합니다 ^^
라스코니 [chouoo]   2006-12-05 17:33 X
저는 단축연산기호가 필요하다고 봅니다. ++, --, +=, 등등이 없는 C 는 진정한 C가 아니라고 생각합니다. 오히려 왜 1이 증가가 되어야 하는 이유를 주석(/* ~~  */)으로 꼭 달아야 하는지 그 필요성에 대해서 초보자가 이해하는 것이 더 좋다고 봅니다.

저는 i++나 i+=1, i = i + 1  읽는데 전혀 불편함이 없지만 나중에 제가 짠 코드를 보면 왜 여기에서 1 만큼 증가시켰는지 그 이유를 알수 없어 한 몇십분 코드를 읽어봐야 하는 경우가 있어서요.
TohnoLyn [tohnokanna]   2006-12-06 00:06 X
그렇군요..
클래스 변수라면 확연한 차이가 생기네요
cc1232 [cc1232]   2006-12-06 20:56 X
음..C언어라면 ++연산자와 += 등이 나오는 게 맞을 것 같습니다. 개인적으론 사용할 때 i++; 보다는 i = i + 1 이런 구문을 더 자주 썼습니다(이유는 종택님과 같습니다. 길더라도 이해가 쉽기 때문입니다). 다만, 전 파스칼을 기본으로 생각하다가 C언어로 넘어가서 그런게 아닌가 싶네요. 처음부터 C언어로 시작했던 사람은 그렇게 생각하지 않더라고요.
cc1232 [cc1232]   2006-12-06 20:59 X
C언어를 파스칼처럼 사용할 수도 있지만, C언어가 파스칼 이후에 나왔는데, 언어를 만든 이가 뭔가를 추가했다면 나름의 이유와 목적이 있을 겁니다. 익숙해지면 확실히 입력하는 시간이나 코드를 보는 것에도 별 영향은 없어지는 것 같더군요(-= 이런 연산자는 슬쩍 지나쳐보다간 실수할 수는 있겠죠). C언어는 C언어 스타일로 하는 게 맞을 듯 합니다

+ -

관련 글 리스트
12470 C 언어 입문서 제작에 대한 의견 좀 ㅡ.ㅡ;; 류종택 2261 2006/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.