'배움'에 해당되는 글 3건

  1. 2008/05/25 컴공학생들이 해보는 짝프로그래밍의 고찰 (2)
  2. 2008/04/20 아니 이런코드가 컴파일 되는거? (1)
  3. 2008/04/07 비주얼스튜디오 2008에서 VC++ 하기 (학생용) (2)

애자일방법론을 아시나요?

본인은 애자일방법론을 아주 좋아합니다.(현재 열심히 배우고 있습니다)

쉽게 애자일방법론을 말하자면

알파 -> 베타 -> 베타 -> RC1 -> RC2

위와 같은 순환으로 점진적으로 App를 완성시킨다는 것이죠. 처음 핵심만 만들고 점점 살을 붙이는 격이라 하겠습니다.

위키백과 - 애자일








이에 반면에 폭포수는 프로젝트마다 다르겠지만 대부분 위에 왼쪽 사진과 같습니다.(ㄷㄷㄷ)

여기서 말하고 싶은것은 애자일이 가지는 짝프로그래밍입니다.

짝프로그래밍을 말하려 하는 배경은 본인은 틈틈이 많은 학생들의 코드를 유심히 관찰해 보았습니다. 역시 학생이다 보니 명명법을 비롯해 제대로 된게 하나 없죠. 이것은 배워야 하는 문제이니 스스로가 노력해야겠죠.

하지만 문제는 모두 로직과 스타일이 다른데 스스로가 제대로 한 건지 못한 건지 모른다는 것입니다. 심지어 자신이 잘 짜고 있다고 믿는 학생도 있습니다. 출력만 예쁘게 잘 나오면 장땡인가 봅니다.

자 그럼 본론으로 코드는 사람마다 모두 다르다고 합니다. 맞습니다. 사람의 환경이 서로 다르니깐요. 그래서 인도나 미국회사들은 정해진 스타일의 틀을 지정하죠. 그래야 유지보수가 한결 쉬워지니깐요.

그런데 학생들은 자신의 코드에 대해 망각에 빠진 채 아무런 지적 없이 코딩을 한다는 것이죠. 하지만 정확히 지적하냐는 건 힘들기에 배제하겠습니다.


한컴퓨터로 두명이상이 코딩하기?

처음 이런 소리 들으면 도저히 이해가 안될 것입니다.(저도 그랬으므로)

하지만 애자일 관련 도서나 블로그를 보면 짝프로그래밍의 장점이 분명 있다는 것이고 프로젝트에 있어 매우 효과적이라는 것입니다. 짝프로그래밍 하다가 성격 안 맞으면 욕나오겠지만 유지보수 안돼서 버그나서 욕나오는거랑 맘먹을 것입니다.


그럼 어떻게 짝프로그래밍을 해야 할까요?

일단 학교 숙제를 가지고 서로 한다는건 엄두도 안날 것입니다. 왜냐면 코드가 같으면 낙제니깐요.ㅎㄷㄷ

또 짝이라 하지만 포기한 학생들 분명 있습니다. 즉 한명만 열심히 코딩 할 수도 있다는 것이죠.

그러므로 수업정책상 하기힘든 방법일 것 같네요.

하지만 스스로가 발전되길 바라는 학생이 있을 것입니다. 그런 학생들이 모여 서로 구현을 하려 한다면 분명 발전이 생긴다는 것 입니다.


결론!

프로그래밍 공부는 책을 가지고 반복

프로그래밍 구현은 두명 이상이 한명은 코딩치고 나머지 참여자는 같은 모니터를 보면서 의견내보고(여건이 안되면 어쩔수....)


장점.

컴퓨터대 개인으로 인해 생기는 망상이 깨진다.

코드가 더 정교하게 된다.

단점.

서로 잘났다 하는 친구랑 하면 싸움이 난다.


애자일하면 이렇게 된다.(잘 뭉치면 승리한다)

짝프로그래밍의 장단점에 대해 잘 정리된 글이네요. http://mars.egloos.com/1635173


생각

분명 팀 과제는 있지만 현실은 팀이 아니고 웬수라고들 합니다. 이런 상태에 이런 방법까지 제안한다면 A+ 받기 힘들죠.

그리고 코드는 그저 네이버검색에 의존하여 나온 코드 위주이고 또는 스스로 생각해낸 코드이니 서로 독특하죠.

그래서 개인이 작성한 코드를 학생들끼리 서로 교환하고 서로 지적받고 물어봐야 한다고 생각을 합니다.

즉 분명히 코드의 피드백은 있어야 한다고 생각을 합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

비주얼스튜디오에서 한글은 가능하단건 알았지만 실지로 한번 전부 한글로 해보았습니다.

소스는 저번 구구단에 대한 얘기를 할때 만든 소스를 사용해 보겠습니다.


#include<stdio.h>

#define 한줄의총커서 72
#define 엑스문자표시총행 16
#define 구구단한계산의글씨량 5

#define 구구단앞숫자 9
#define 구구단뒷숫자 9

void 야너곱하기만해(int x, int y)
{
        printf("%dX%d=%d",x,y,x*y);
}

void 몇줄띄기(int count)
{
        for(int i=0;i<count;i++)
               printf("\n");
}

void 몇칸띌래?(int count)
{
        for(int i=0;i<count;i++)
               printf(" ");
}

bool 짝수이면_(int value)
{
        if(value%2==0) return true;
        else return false;
}

void main()
{
        int
여태총몇줄했어= 0;
       
int
총몇개계산했어= 0;

        int 임시1야= 0;
       
int
임시2야= 0;

        for(int i=1 ;i<=구구단앞숫자;i++)
       
{
               for(int j=1 ;j<=
구구단뒷숫자;j++)
              
{
                      
총몇개계산했어++;
                      
임시1야= (여태총몇줄했어%엑스문자표시총행)+1;

                       if(임시1야<= 엑스문자표시총행/2)
                      
{
                              if(!
짝수이면_(총몇개계산했어))
                             
{
몇칸띌래?((임시1야-1)*구구단한계산의글씨량);
                             
}
                              else
                              {
몇칸띌래?(한줄의총커서-(임시1야*구구단한계산의글씨량)-(임시1야-1)*구구단한계산의글씨량);

                              }

                              임시2야= 임시1야;

                       }

                       else

                       {

                              if(!짝수이면_(총몇개계산했어))

                              {

몇칸띌래?(임시2야*구구단한계산의글씨량);

                              }

                              else

                              {

                                      몇칸띌래?(한줄의총커서-(임시2야*구구단한계산의글씨량)-(임시2야+1)*구구단한계산의글씨량);
                             
}
                       }
야너곱하기만해(i,j);
                       if(
짝수이면_(총몇개계산했어))
                      
{
몇줄띄기(1);

                              여태총몇줄했어+= 1;

                              임시2야--;
                      
}
               }
        }
        getchar();

}

VS 2003부터 가능하지만 VS2003은 앞글자가 영문이어야 한다고 하더군요.

솔직히 지저분하고 쫌 웃기지만  초보들이 읽기에 더더욱 편할 것 같네요.

모로 가든 서울만 가면 되지 않을까요? ^^ (서울을 출력으로 비유한게 아니라 배움)

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

다니고 있는 학교의 개발도구 현황을 보면 대부분 비주얼스튜디오(이하 VS) 6.0을 사용하고 자바관련 수업은 최신버젼의 이클립스를 사용하는 것을 보게됩니다.

왜 VS6.0만 고집하면서 이클립스는 최신버젼을 사용할까요? 단지 무료이기 때문일까요?

단언컨대 이클립스는 자주 사용하지 않아서라고 할 수 있습니다. 학교의 커리큘럼에 1학년과 2학년의 수업은 대부분 C와 C++ 관련되어 있어서 이클립스를 만져 볼 기회도 없거니와 수업은 VS6.0 위주로 가기 때문에 마치 VS6.0은 개발도구의 단계라고 여기고 있는 것 같습니다. 즉 이클립스는 안해왔기 때문에 최신버젼이라도 어색하지 않는 반면 VS는 늘 6.0만을 다루었기 때문에 VS 6.0 이상 도구는 어색 하게 느껴지며 더 불편하단 소리로 접근 조차 하지 않으려고 합니다.

본인은 학부때 숙제를 VS 2003, VS 2005 로 개발하여 제출 해왔고 프로젝트는 혼자 다른 플랫폼을 사용하여 주목을 받곤 하였습니다.


그럼 VS2008에서 C++을 어떻게 사용하는지 간단히 보여드리겠습니다.


먼저 VS2008을 설치합니다. 닷넷 3.5기반이고 멋진기능들이 가득해서 설치가 오래 걸릴 것입니다.

그럼 이 세 분이 기다리고 있을 것입니다.(설치 중에 대화도 해보세요.)

설치가 잘 마무리 되었다면

첫 실행을 하면 자기의 주류의 언어를 선택하고 그에 맞는 스타일을 자동으로 구성을 하게 됩니다.

프로젝트의 종류를 선택합니다.

늘 숙제는 Console(콘솔)형태로 하기 때문에 아래 그림처럼 선택을 합니다.

그림과 같이 Win32 콘솔 응용 프로그램을 선택하고 프로젝트 이름을 입력 후 확인 버튼을 누릅니다.

그럼 아래와 같이 마법사가 시작이 됩니다.

다음 장면에 주의 하실점은 바로 "미리컴파일된 헤더" 체크를 해제 해야 한다는 것입니다. 이 것은 컴파일시 매번 필요없는 컴파일을 미리 해준다는 것인데 큰 프로젝트가 아니므로 체크 해제를 반드시 하시기 바랍니다. 만약 체크 하시고 하신다면 미리 컴파일을 해두는 파일에 헤더를 설정하여야 합니다.(어렵진 않습니다.)

그냥 단순히 헤더를 미리 컴파일 할꺼냐 말꺼냐라는 옵션입니다.

나중에 프로젝트 옵션에서 재설정 할 수 있습니다.

 

자 그럼 프로젝트는 만들어지게 됩니다. 처음 솔루션창을 보시기 바랍니다.

조금 잡다한 파일들이 있는데 본 소스파일만 남겨두고 나머지 파일을 과감히 삭제 하시기 바랍니다.

이제는 소스 내용을 봐 볼까요?

 

진입점(main)도 이상하고 이상한 글자들이 괴롭히십니까? 그럼 그냥 다 지우세요.

그리고 즐겁게 코딩하시면 됩니다.


using namespace std; 구문은?

각종 함수가 각각의 패키지로 들어가 있어야 하는데 만약 패키지가 없다면 모든 함수는 일관성없이 한곳에 모여 있을 것입니다.

현재 코드는 cout함수가 있는 std의 패키지를 사용하겠다라는 구문입니다.

그리고 옆에 그림을 보시면 눈에 확들어오는 인텔리센스가 펼쳐지고 원하는 함수에 마우스를 올리면 그림과 같이 입력과 출력 타입을 알 수가 있습니다.

atof의 함수는 char * 타입을 변수로 받고 double 타입으로 출력을 하며 stdlib.h 헤더에 들어가 있다는 것을 알 수가 있네요.

이래도 힘들어 보입니까?

초보인 학생들은 좋은 툴이 정말 좋은 길을 제시할 것 입니다.

간혹 위 그림처럼 나오는 인텔리센스 덕에 "학생들이 너무 의존하게 되어 버릇이 없어진다." 라고 함구하는 분들이 간혹 계십니다.

저는 그 분들에게 이렇게 답변을 하고 싶습니다.

"학생들에 있어서 코드가 전부는 아닙니다."

생각하고 만들고 박수 받을 시기에 먼 훗날 코딩을 대비해야 할까요?

생각하세요. 펼쳐보이세요. 재미있는 것을 해보세요.

과정에 있어서 중요한 건 코딩도 언어도 아닙니다. 중요한 건 만들어질 작품의 기대입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
1 

글 보관함

get rsstistory!