블로그 이미지
레인레테
연락처 : rainlethe@rainlethe.com 영혼을 잃어버리다.

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
2012/01/09 12:34 RL.P rogramming
1. 맨땅에 개발하던 시대.
아주아주아주아주 먼 옛날. 
소형 컴퓨터라는 것이 방 하나를 꽉 채울 만큼 큼직했던 시절.
디버깅이라는 것이 실제로 진공관 사이에 끼어 죽어있는 벌레를 처리하는 것이었던 때에 모든 개발자들은 컴퓨터 작동에 필요한 모든 논리를 처음부터 만들어내야 했어요. 

자동차를 만들 때마다 고무를 녹여 타이어를 만들고, 철을 녹여서 엔진을 만드는 격이었죠.


2. 라이브러리가 등장하다.
그러다가 누군가가 이런 생각을 했어요. 
그럼 미리 고무를 잔뜩 녹여서 타이어를 만들어놓으면, 자동차를 조립하기 편하겠네?
그래서 많은 개발자들은 일일이 고무를 녹이는 대신 타이어를 파는 가게에서 바퀴를 사다가 끼기만 하면 되었어요. 
자동차를 만드는 시간은  획기적으로 단축되었고, 모든 개발자들은 이것이 마법이라고 생각했어요. 

이런 타이어 같은 것을 '라이브러리' 라고 해요. 미리 만들어진 부품을 가져다가 쓰는거죠.


3. 프레임워크의 시대가 도래하다.
이렇게 타이어를 팔던 가게가 번성하던 어느 날, 새로운 자동차가 필요해진 A씨는  이런 생각을 했어요. 
'내가 왜 자동차를 만드는데 이 모든 부품을 다 알아야 하는 걸까? 그냥 조립이 다 되어 있으면 안되는걸까?'
그래서 A씨는 엔진, 타이어, 핸들 등이 다 붙어있는 자동차를 만들어 팔기로 했어요. 
이 자동차를 구매하는 사람들은 '색깔' 이나 '선루프'  등의 옵션만 선택하면 되게 된 거죠. 

이렇게 '자동차'를 만들기 위한 '꼭 필요한 부품들이 미리 조립되어 있는 것' 을 프레임워크라고 합니다.

이런 식으로 컴퓨터 프로그래밍은 발전되어 왔답니다.

더이상 사람들은 자동차에 대해서 정확히 어떤 구조로 굴러가는지 알 필요 없이 엑셀레이터를 밟으면 굴러가고 브레이크를 밟으면 멈추며, 핸들을 돌리면 방향이 바뀐다는 것만 알면 되는거죠.

참 아름다운 세상이에요.


4. 문제가 생겼을 때는 어떻게 하지?
끝!
.. 이라고 하면 참 아릅답고 행복했을 때지만, 현실은 그렇지 않아요. 
여느날처럼 자동차로 출근을 하던 B씨는 갑자기 달리던 자동차가 덜컥 멈추는 황당한 사태를 맞이하게 되었어요.
자동차에 대한 지식이라고는 운전하는 법과 라디오 켜는 법밖에 모르던 B씨에게 이건 낭패였죠.

그래서 B씨는 '인터넷'이라는 이름의 친구에게 다급하게 전화를 합니다. 
'인터넷'은 자기가 알고 있는 지식을 총 동원해서 B씨를 도와주려고 하지만
B씨는 도대체 왜 자동차가 멈추었는지 알 길이 없었기 때문에 설명하기가 너무 어려웠어요.

결국 B씨는 '인터넷'에게  '고렙 개발자' 라고 하는 이름의 자동차 수리가게를 소개받았죠.


5.  결국 구조를 다 알아야 하네?! 
'자동차 수리가게' 에서는 B씨에게 '엔진오일도 없고 미션 상태도 좋지 않네요.' 라고 말을 해 줬어요.
그렇지만 B씨는 자동차 안에 왜 엔진오일이 필요한 건지, 미션이라는건 도대체 무엇인지 알 수가 없었어요.
그냥 '고쳐주세요' 라고 말하는 수밖에 없었죠.

그리고 생각했어요. 
'아. 정상적인 상태일때는 미리 조립되어 있는 것이 참 편리하지만, 문제가 생기면 결국 기본 구조를 다 알아야 하는구나.'


6. 제조사에서는 어떻게?
이런 상황을 자동차 제조 회사에서도 모를리가 없죠. 
그래서 자동차 회사에서는 '최신 자동차 조립기술'에 맞는 '최신 전자제어장치'를 집어넣기로 했어요.
엔진오일이 없으면 계기판에서 경고등이 나오는 장치에요. 
이제 더이상 B씨는 엔진오일이 없어서 자동차가 달리다가 멈추는 일은 없을 꺼에요! 

.. 물론 여전히 미션의 상태는 확인할 수 없겠지만요. 

또 시대가 바뀌면서 자동차가 그냥 운송수단에서 레져로 바뀐다는것을 자동차 회사는 간파했어요.
그래서 자동차의 시트를 푹신하게 바꾸고, 크루즈 기능을 넣어서 자동 운전이 가능하게 만들었죠. 
즉, 이 회사는 '자동차'라는 프레임워크와 그걸 만드는 기본 재료인 '시트'를 통채로 다 맞춰서 바꾸는 거에요. 

이런걸 제일 잘하는 회사 이름은 마이크로소프트에요.

웹 여행을 할 때 쓰는 자동차 "ASP.NET" 을 시대에 맞춰서 "ASP.NET MVC 나 ASP.NET AJAX" 로 변신시키고, 
데스크탑에 코어가 여러개 달린 컴퓨터 시대가 도래하자 "패러럴" 기능을 아얘 언어에 통합시켜 버렸답니다. 

덕분에 운전자들은 '크루즈' 기능을 어떻게 쓰는건지 배워야 했지만
대신 일정한 속도로 달릴 특정 상황에는 엑셀레이터를 안밟아도 되는 편안함을 얻게 된 거에요. 


7. 튜닝 한번 해볼까?

멋쟁이 C씨는 자신의 자동차가 다른 자동차들과 똑같아 보이는게 싫었어요. 
그래서 자동차 문이 옆으로 열리는 대신 위로 열리게 개조를 한 거에요.

그런데 자동차 문을 바꿔놓고 보니 멋지기는 한데, 자동차가 달릴때 자꾸 바람소리가 들려와요.
알고보니 자동차회사가 이 자동차를 설계할 때 초정밀 계산기로 계산해 둔 자동차가 달릴때  외부 바람에 대한 마찰역학계수를 C씨는 몰랐기 때문이었어요. 

결국 C씨는 위로 열리는 문을 뜯어내고 다시 옆으로 열리게 개조하는 수밖에 없었습니다. 

이렇게 프레임워크는 '구조상 하위호환성을 유지하면서 업그레이드하는 것'은 멋쟁이 C씨가 할 수 있는 일이 아니었네요. 자동차 회사만 가능하군요. 


8. 낡았어. 바꿔야겠어. 
오랫동안 차를 잘 타고 다니던 'D' 씨는 이 차가 시대의 흐름에 맞지 않는다고 느꼈어요. 
주위 친구들은 다들 최신 기종인 'Ruby on rails" 를 타고 다니는데 자신만 'Structs' 를 타고 다니는건 촌스러워 보였거든요. 
그래서 이 차가 자신에게 맞나 한번 타보기로 했어요.
아니 그런데 이게 뭐에요.
핸들은 오른쪽에 있는 데다가 기어가 핸들 옆에 붙어있고, 심지어는 크루즈 모드도 없어요. 게다가 더욱 더 이해할 수 없게  여기는 뭐에 쓰는지 모를 '에어 브레이크'라는 기능도 있다는 거에요. 
D씨는 도대체 이걸 어떻게 운전하는지조차 알 수 없어서 친구들에게 물어봤지만, 친구들은 '우왕 이게 킹왕짱 익숙해지면 완전 편해' 라고만 할 뿐이었어요.
물론 몇몇 친구들은 적극적으로 나서서 'Ruby on Rails' 에 익숙해지는데 도움을 줬지만, 이미 'Structs'에 익숙해신 D씨는 도저히 이해할 수가 없는 것들 투성이었죠.
결국 D씨는  '옛것이 좋은 것이여' 라는 말을 남긴 채   'RoR'을 사용하는 것을 포기했답니다.

이렇게 프레임워크는 한번 익숙해지면, 다른걸로 갈아타기가 너무 힘든 경우가 많아요. 각 프레임워크는 각 프레임워크를 관통하는 철학이 있거든요. 




조금은 프레임워크에 대해서 이해가 가시나요? 


2012.01.09. By RL.P
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2012/01/02 19:50 RL.P rogramming
저는 개발자입니다.

본격적으로 개발자로 일을 하기 시작하면서 가장 많이 다루었던 언어는 C#이고, 그 외에 보통 소소한 인하우스 프로그램들은 보통 그때그때 상황에 맞춰서 개발 환경이나 언어를 선택합니다.

이번에는 간단하게 URL을 파싱할 일이 있어서 Python을 이용해 보았는데요. 이때 느꼈던 점을 간략히 서술해 보려고 합니다.


I. 왜 Python 이었을까.
굉장히 단순합니다. 좀 더 Python 을 배워보고 싶었고, 구글에 URL 파싱이라고 쳐보니 가장 흔하게 나오는 자료가 Python의 모듈 중 하나인 BeautifulSoup이었기 때문입니다.

저는 무언가를 개발할 때, '가능하면 남들이 한 삽질 따라하지 말자.' 주의기 때문에 , 다른사람들이 어떤 식으로 문제를 해결했는지 꽤나 오래 살펴보는 편인데요. 
BeautifulSoup 같은 경우에는 '쉽고 편하다'라는 점. 그리고 일관된 메뉴얼이 있어서 좀 삽질을 덜하겠다 싶었습니다.

II. 그럼 왜 C#이 아니었을까.
왜 익숙한 닷넷 플래폼이 아니었을까요?

C#에서는 URL을 파싱하는 방법이 굉장히 많습니다.
System.URI 클래스를 사용할 수도 있고, 
mshtml COM을 이용할 수도 있으며,
심지어는 WebBrowser 컨트롤을 이용해서 읽어올 수도 있습니다.
물론 XML 클래스를 이용하는 방법도 빼놓을 수 없겠죠.
게다가 삽질 가능하다면  String을 파싱해서 HTML 트리를 만든 다음 하나씩 분해할 수도 있습니다.

... 이 많은 방법 중에 어떤게 저에게 맞는 방법인지 찾는 것도 사실은 일입니다. 다 작동한다는건 알겠는데, A 방법은 ㄱ작업시 불편하고 , B 방법은 ㄴ 작업이 아예 불가능하거나 리플렉션까지 이용해야 한다면, 이건 만드는 시간보다 어떤 도구를 선택할 지 고르는 시간이 더 오래 걸릴 것 같았습니다.

인하우스 프로그램이 아니라 외부에 납품하거나 공개하는 거였다면, 저는 좀 삽질을 해서도 c#을 사용했을지도 모르겠지만, 어차피 나만 쓰는데 굳이 돌아갈 필요는 없겠다 판단했습니다.

III. 그래서 뭘 느꼈을까.

1. 테스트가 엄청 많이 필요하다.
Python은 동적 언어이기 때문에, 말 그대로 '실행시켜' 보지 않고서는 어떤 결과가 나올 지 예측하기가 좀 어렵습니다.
정확히 말하면 어떤 '타입'이 튀어나올 지 알기 힘들죠.
정적 언어는 그 특성상 (대부분의) 변수나 함수가 타입이 정해져 있는 데 반해, 동적 언어는 단순히 '튜플을 반환한다' 정도입니다.
이 튜플이 어떤 특성을 가지는지는 그냥 '컨벤션' 에 따르는 경우가 많고, 그렇기 때문에 실제 데이터를 넣고 실행시켜 보지 않는 한 내가 원하는 정확한 결과가 나올 지 알 수가 없더군요. 
그래서 실제로 코드를 만들어내는 시간보다 코드를 일일이 쪼개서 테스트하는 시간이 더 오래 걸렸습니다. 
물론 정적 언어로 개발할 때도 테스트는 신물이 날 정도로 합니다만, 이건 그런 수준이 아닙니다. 코드몇글자 바꿔놓고 테스트해보고, 또 테스트해보고, .. 를 반복합니다. 


2. 코드 길이는 압도적으로 짧다.
실제로 코드 길이는 압도적으로 짧습니다.
Python의 모듈들이  동적으로 이루어지고, 언어 문법 자체가 훨씬 다이나믹하기 때문에, 굳이 필요없는 부분은 잘 들어가지 않습니다.
저도 사용하기 전까지는 크게 못느꼈었던 부분인데, 막상 사용해보니 그렇더군요.
한 눈에 전체 구조가 보일 정도로 코드가 짧아집니다.
즉, 환경이 짧은 코드를 장려하기에 더욱 코드가 짧아지는듯 합니다. 

3. 자료구조. 그리고 함수. 
C#을 쓸 때는 '자료구조'와 '함수'를 서로 맞춰야 합니다.
일관되게 Object형이나 String 형으로 써 버린 다음 사용시에 캐스팅을 한다면 할 말이 없지만, 언어단에서 장려하는 문화가 아니기에 사용이 꺼려집니다. 
그리고 이러한 구조를 잡는 것이 훨씬 '단단한' 느낌이 들기도 하죠.
반면 Python을 사용할 때는 자료구조는 거의 생각하지 않습니다. 
선언부에 타입을 적지 않기 떄문에, 그냥 내가 뭘 할지만 생각하면 됩니다.
함수가 완성되고 나면 어쩐지 저절로 반환 타입이 정해진 느낌이 들 정도로, 논리 흐름에 집중할 수 있습니다.
보통 정적 언어에서는 Scalar Type 과 Collection Type은 완전히 다르게 처리해야 합니다만, 동적 언어는 그런 부담이 적습니다.
하나가 변경되었을 때 나머지 코드가 변경되는 양이 압도적으로 작기도 하죠. 
대신 사용할 때 조심해서 사용해야 하는 단점은 있습니다.


4. IDE 의 부재
개인의 편차는 있을 것입니다만 Eclipse, Visual Studio 등을 비롯한 IDE는 개발하기에 정말 좋습니다.
특히 저는 닷넷 개발자니까 당연히 Visual Studio 제품군을 사용하는데, 이건 단순히 IDE 라고 부르기에 미안할 정도로 훌륭합니다. 
반면 동적 언어 진영은 여전히 IDE가 부실합니다. 
인텔리센스, 자동 리팩토링, 빌드 자동화, 버전 관리 시스템과의 일체성, 거의 완벽에 가까운 디버깅 환경 등 정적 언어에서는 IDE 가 굉장히 잘 발달해 있습니다.

반면 동적 언어들은 IDE가 그리 좋지 않습니다. Eclipse에 붙어있는 PyDev도 그닥 훌륭한 수준은 못되는것 같고, Scite는 개발환경이라기 보다는 그냥 텍스트 편집기 수준 정도입니다.

이게 그럴수밖에 없는게, 동적 언어는 말 그대로 '동적'이기 때문에, 실제로 프로그램이 돌아가기 전까지는 이 메서드가 실제로 있기는 한 건지, 혹은 잘못된 부분이 발견되었을때는 어떻게 해야 할 것인지에 대한 메타 정보가 거의 전무합니다. 그렇기 때문에  모든게 결정되어 있는 정적 언어와는 전혀 다른 환경이 나올 수 밖에 없죠.

... 사정은 이해합니다만, 굉장히 편리한 환경에서 개발하다가 이런 환경에서 개발하라고 하면, 도대체 이건 왜 안돼지? 이건 왜? 심지어는 조사식도 이렇게 불편한가? 등등 불만만 막 터져 나옵니다. 


게다가 이건 디버깅도 사실상 어렵습니다.
중단점을 찍는것 까진 좋은데, 변수가 실제로는 그냥 포인터일 뿐 값을 들고 있는게 아니라서 조사식을 일일이 계산합니다. 
거기까지도 좋은데, 그럼 연산을 못하는 함수 프로퍼티는 그냥 무시하면 될 텐데, 그걸 어떻게든 계산을 해 보겠다고 애를 쓰더니 ... IDE가 죽어버리는 황당함도 생깁니다.

대체 뭔지.
 
5. One Way.
사족으로 이건 Python의 특징일지도 모르지만, 한가지 일을 해치우는데는 한가지 방법밖에 없다.. 라는 원칙은 의외로 굉장한 도움이 됩니다. 어떤 Reference를 찾아봐도 거의 동일한 답이 나온다는 것이고, 그 Reference가 내 상황에 맞는지만 판단하면 되니까요.


IV. 결론.

 동적언어는 생산성이 좋다. 하지만 그 짧은 코드를 만들어내는 시간이나 노력은 정적 언어와 큰 차이 없더라. 그냥 가장 알맞는 라이브러리가 있는 언어를 골라 쓰자.. 정도 되겠습니다.



읽어주셔서 감사합니다.  

2012.01.02. By RL.P 
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/28 09:00 RL.P rogramming/Scratch


다시 돌아온 스크래치!
이것저것 다른 포스트를 쓰다보니까 조금 늦어졌군요.
오늘은 소리!를 내보려고 합니다.
그냥 우두커니 날아다니기만 하면 재미 없잖아요?



에서 이어집니다.


먼저 스크래치를 켜야겠죠?
금새 나왔군요 :) 언제나 우리를 맞아주는 고양이.

하지만 역시 이번꺼에는 필요없으니까 지우자구요.
우리에게 필요한건 박쥐 뿐!
지우는 방법 아시죠?
우측 하단의 빨간색 테두리 쳐 둔 부분이 개체 집합소라는거!
고양이를 오른쪽 클릭하셔서 삭제버튼을 과감히 눌러주세요.


지난번에 했던 bat2 프로젝트를 한번 더 불러보아요.

파일 -> 열기에 가셔서

bat2 선택하시고 확인 버튼을 클릭하세요.
참잘했어요 :)


지난번에 우리가 했던 프로젝트가 그대로 남아있네요.
아고 기특해라 ㅎㅎ


소리를 추가할 꺼니까 소리 탭으로 가야겠죠?
스크립트 옆에, 지난번에 배운 모양 탭 옆에 이번엔 소리입니다.
전문적인 용어 영어로 사운드라고 하죠 ㅎㅎ
가져오기를 눌러볼까요?
이 메뉴는 말 그대로 어떤 개체에 소리를 가져오는 메뉴에요.
우리는 박쥐에 소리를 가져올 꺼니까 소리를 클릭해 주세요.
그리고 맘에 드는 소리를 클릭해서 확인 버튼을 누르시면 끝!
확인버튼을 누르기 전까지 소리를 누르면 미리 들어볼 수 있으니까 미리미리 들어보고 누르자고요 ^^

저는 회색박쥐에 Bird를 가져오기로 했어요.
어라? 한번밖에 안가져왔는데 두개가 있네? 라고 하시는분이 혹시 있을까봐..
그냥 두번 가져온 거에요.
일단 Bird를 가져온 다음엔 Cat을 가져오기로 해요.
먼저 Bird를 가져온 다음 다시 가져오기를 눌러서 Cat을 가져오면 끝!

왜 굳이 Bird하고 Cat이냐면.. 기본적으로 제공하는 소리에 bat가 없더라고요. 박쥐소리가 뭐였더라.. 쉬이이익 이런 식일까요? 설마 갸르르륵은 아니겠지..


회색박쥐만 소리가 있으면 까만색이 심심할테니까 까만색도 가져옵시다.

방법은 똑같아요.
오른쪽 밑에 부분에서 까만색 박쥐를 선택한 뒤에
소리 -> 가져오기-> Dog1 -> 확인
가져오기 -> Dog2 -> 확인.

이것이야말로 진정한 개소리(...) Dog Sound 되겠습니다.

근데 가져온다고 끝이 아니에요.
왜냐하면 이 소리가 언제날지를 결정해 줘야 하니까요!

제어를 어디서 할까요?
맞추면 당신은 센스쟁이 우후훗!

넵. 스크립트입니다. 모든 제어는 다 스크립트죠 :)


왼쪽 위에 있는 명령어 블록 구분하는거 이제 다들 아시죠?
그리고 우리가 뭘 제어한다고 했었죠? ~

정답입니다. (혼자 북치고 장구치고..)
그럼 소리 블록을 제어해 봐야죠. 소리는 분홍색입니다 :)
cat 소리내기 블록 보이시나요?
똑똑한 스크래치는 우리가 아까 cat이라는 고양이 소리를 가져왔다는걸 이미 알고 있네요.
이걸 어디다가 놓을까..고민해 보다가 아무래도 박쥐가 퍼덕거리는 순간이 좋을것 같아요.
그래서 박쥐가 모양을 바꾸는 순간! 바로 밑에 블록을 끌어다가 놓아요.
그런데 박쥐 모양이 계속 바뀌잖아요? 에? 모르겠다고요?
지난번 강의가 너무 오래되어서 기억이 안나시는 분들은 다시한번 보고 오세요.
[RL.P rogramming/Scratch] - 5. 박쥐가 퍼덕퍼덕 날개짓을 합니다요.
에서 그랬잖아요. -_-++ 날개를 폈다 접었다를 반복해줘야 한다고요 ;-)

그래에서! cat 소리내기 블록 을 모양이 바뀌는 곳 두군데 아래에 가져다 둡니다.


까만색 박쥐도 잊어버리면 안돼죠?


까만색 박쥐를 오른쪽 밑에서 선택하고, 소리명령어 집합으로 간 다음에 똑같이 끌어다 놓자구요.
회색 박쥐랑 똑같이 bat 로 모양 바꾸기 아래에 두시면 됩니다 :)

실행해 볼까요?


캬하핫 박쥐가 날개짓을 할때마다 새소리 고양이소리 개소리를 하면서 날아가요!

그런데, 화면이 너무 작다고요?
걱정마세요.
오른쪽 젤로 위에! 빨간색 쳐둔 부분을 주목!
버튼이 세개 있는데요. 마우스를 올려보면 다음과 같은 글씨들이 나와요.
무대화면 작게보기, 무대화면 크게 보기, 프리젠테이션 화면.
각각 이렇게 보입니다.
제일 왼쪽의 무대화면 작게보기 버튼을 눌러보면, 스크립트창이 엄청! 커지고 무대가 작아지죠?
이건 나중에 스크립트가 길어질때를 대비해서 그런거에요

가운데 무대화면 크게보기 버튼을  눌러보면
그냥 평상시 화면이군요.
이게 기본값이라는걸 알 수 있어요.

그리고 마지막으로 제일 오른쪽의 프리젠테이션 보기를 눌러봅시다.

완전 커졌어요. 이러면 자랑좀 할 수 있겠는데요?
다행히 오른쪽 위에 깃발 버튼이 있어서 박쥐가 날아다니게도 할 수 있고요 :)


긴글 따라오느라 수고하셨어요. 담에 뵈요!


2011.02.28. By RL.PS

덧. 그냥 보시지 마시고 꼭 따라해 보세요. 프로그래밍은 따라해보고 직접 해 봐야 늘어요!!!

저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/13 08:00 RL.P rogramming/Scratch
















에서 이어져욥 !

오늘 우리가 하려는 것은 이런겁니다.

박쥐가 날개를 퍼덕거리면서 오른쪽으로 1초마다 날아가기!


신기하죠? :)


자. 이제 시작해 보죠.

이제는 스크레치가 시작 프로그램 위쪽에 올라올 때도 됐죠?

다시한번 켜 봅시다.

그리고 지난번에 4. 박쥐가 움직여요! 에서 했던 프로젝트를 한번 불러와 봅시다.


파일에서 프로젝트 가져오기를 선택해요.


그러면 우리가 지난번에 했던 프로젝트가 목록에 있을꺼에요.

아마도 더 많은 프로젝트가 생기면, 더욱 많은 목록에 글이 생기겠죠?

이 연재가 끝나고 나면 스크롤이 생겨있을 꺼에요 ^^


지난번에 저장했던 대로 BAT프로젝트를 한번 불러와 봅니다.

BAT를 누르고 확인 버튼을 누르시면 되요 :)

자아 지난번에 했던 프로젝트가 불러와졌습니다.

어라? 근데 뭔가 이상하네요?

스크레치의 트레이드 마크! 고양이가 그대로 있어요!

이건 뭥미..라고 생각하지 마시고 일단 삭제해 주세요.

나중에 이런 기능도 쓸모가 있을 테니까요 :)


삭제하는 방법은 이제 아시죠?

오른쪽 하단의 회색창에서 고양이 우클릭 후 삭제!

과감하게 너는 탈락이야!



이번에는 회색 박쥐를 클릭하고, 스크립트 탭 옆에 있는 모양 탭을 클릭해 볼께요.

그리고 '가져오기' 버튼을 누릅니다.

짜잔.

새로운 스프라이트 가져오기에서 봤던거랑 똑같은 화면이 나왔죠?

이번엔 날개를 아래로 내리고 있는 박쥐를 가져와 봅니다.

클릭하고 확인!

이제는 다 아실 꺼에요 ㅎㅎ

회색만 가져오면 섭섭하니까

검은색도 똑같이

모양-> 가져오기 해서 날개를 아래로 펴고있는 박쥐를 가져와 보죠!


두둥, 확인을 누르게 되면


요렇게, 검은색 박쥐의 모양이 두개가 되었어요!

새로 가져온 박쥐의 모양을 클릭해보면


모냥도 바뀌는군요. 호오라.



엇, 그럼 이쯤에서 뭔가 이상한게

똑같이 가져오는 건데, 스프라이트 가져오기는 뭐고 모양 가져오기는 뭘까요?

스프라이트라는건 ,

무대에 배치되어 있는 '개체'를 뜻해요.

그게 사람이 됐든 동물이 됐든 뭐가 됐든 간에요.

그러니까 연극무대에 올라간 배우라고 생각하시면 쉬울꺼 같아요.

디렉터나 플래시를 써보시는 분은 아시겠지만

타임라인 위에 각 Object를 배치해서 움직이게 하잖아요?

그거랑 똑같은 거에요 ^^

'모양'은 무대에 배치되어 있는 개체가 어떤 모양을 할 수 있는가를 뜻하고요.


출처 : 본인 그림판 신공.

이렇게요 ^^;;

스프라이트 하나는 저 파란색 인간이고,

모양은 삿대질 하나, 무릎꿇고 있는거 하나.. 라고 생각하시면 쉽겠네요 ^^

그리고 '스크립트'는 보시다시피 저 배우의 동작을 결정하는 거죠

자 그럼 이 스크립트 파트로 다시 돌아와서

회색의 박쥐를 우측 아래에서 클릭해 보면

우리가 기존에 만들었던 스크립트가 그대로 남아있네요.!


그런데 가만히 보니까 너무 지저분한 거에요.

똑같은걸 열개나 써놓다니! 단정한 내 성격으로써는 정의의 이름으로  용서할 수 없다!

라고 해서 지워버리기로 결심을 합니다.

먼저 녹색깃발 클릭되었을 때 .. 아래부분의 10만큼 움직이기를

오른쪽 클릭을 한 상태로 다른곳으로 질질 끌고와 봅니다.


분리되는 모습 보이시나요?

일단 녹색깃발 클릭되었을 때와 아래의 행동들을 분리한 후에

과감하게 우클릭하셔서 삭제! 합시다.

이걸 굳이 분리해서 삭제하는 이유는,

그냥 붙어있는 상태에서 삭제하면

'녹색깃발 클릭할때' 까지 한번에 지워져 버리거든요 ^^;;

다시 드래그하기 귀찮기도 하거니와

이렇게 짧은게 아니라 훨씬 긴거일 경우에는 부분적으로 삭제할 일이 있을테니까

그때를 대비해서 미리미리 배워놓아요 :)


삭제를 하다니.. 아아..나의 노고가..라고 생각할 수도 있지만

더 쉬운 방법으로 가는거니까 이해해 주세요

그리고 지난 강좌에 배웠던 방법 그대~로.

반복10회 사이에
10만큼 이동하기
1초 기다리기
를 넣자구요.

어라라, 그런데 이게 뭔가요?

사진에 못보던 보라색이  생겼어요.

넵, 이것이 바로 오늘의 비밀. '모양 제어하기'입니다.

1초 기다리기 밑에 모양 bat1-a로 바꾸기..라는게 생겼죠?

뜬금없이 bat1-a이 뭐야? 라는 생각이 드신다면

다시 '모양'탭을 눌러주세요.


보이시나요?

회색 박쥐가 날개를 편 모습이 bat1-a

그리고 날개를 접은 모습이 bat1-b 라는거!

이 이름은 바꿀수도 있지만,

 아까 그냥 내버려뒀기 때문에 그냥 자동으로 붙는 이름이 되었네요.


자아 그럼 아까 작성한 스크립트는 무슨 뜻이 될까요?

10만큼 이동하기 -> 1초 기다리기 -> 모양 bat1-a로 바꾸기

가 되겠군요.

부푼 기대를 안고 실행해 봅니다.

... 아까랑 아무차이가 없잖아! 라고 화를 내시는 분

잠깐 진정하시고 왜그런지 좀 살펴볼께요.

bat1-a 그림은 말 그대로 회색박쥐가 날개를 펼친거죠.

그런데 스크립트 그 어디에도 회색박쥐가 날개를 접은 모양으로 바꾸라는 말이 없는 거에요!

그래서 아래와 같이 한번 더 작성해 봤어요.


클릭되면
반복 10회
10만큼 움직이기
1초 기다리기
모양 bat1-b로 바꾸기 (박쥐가 날개를 접겠죠?)
10만큼 움직이기
1초 기다리기
모양 bat1-a로 바꾸기 (박쥐가 날개를 펴겠죠?)

참고로 모양 바꾸기에서 안으로 움푹 들어가있는 상자는

'이 스프라이트의 모양'중에서 선택할 수 있는 모양 목록이 나와요.

지금같은 경우 bat1-a, bat1-b 두개가 나오는군요.

직접 클릭해보세요 ^^


그러고 나서 오른쪽의 파란색 깃발을 눌러서 실행을 해봅니다.

박쥐가 파닥파닥 움직여요. !


어라.어라. 어라?

그런데 왜이러지? 회색 박쥐가 검은색 박쥐보다 두배나 더 많이 가네요!


에잇. 생각해보니 그도 그럴것이

한번 반복할때마다 박쥐가 10 * 2 = 20씩 움직였네요!

그래서 위와같이 반복을 5번만 하도록 고칩니다.

'반복 10회' 안에 있는 글자를 반복 5회로 키보드로 치시면 되욥.

자 이제 실행하시면 정상적으로 돌아오죠?

좋네요 ^,.^

이번엔 까만색 박쥐를 처리할 차례죠?

우측 하단의 까만색 박쥐를 클릭해 보면

지난번에 했었던 스크립트가 고대로 남아있네요!

이번에 까만 박쥐는 또 회색박쥐랑은 다른 방법으로 해볼께요.

제가 이번에 선택한 방법은,

니가 다음에 바꿀 모양은 이거야! 라고 지정해주는 방법입니다.


왼쪽의 분류 중에서 주황색인 '변수' 클릭해 볼까요?

 아래쪽에 '변수만들기'라는 거 보이시죠?

클릭~하세요!


가운데에 요론게 나옵니당.
박스에 batshape라고 친건 제가 대충 쳐 넣은거구요.

아래에 '모든 스프라이트에 대해' 그리고 '이 스프라이트에 대해'는

까만 박쥐에서만 쓰는거냐 아니면 모두 다 같이 쓰는거냐 ..에요.


아차. 제가 변수에 대해서 말씀을 안드렸군요?!

변수는요. 프로그래밍을 할때요.

각 스프라이트의 상태나 값같은걸 저장할 수 있는 걸 말해요.

변(할 수 있는)수 라는 뜻이고요.

수라고 적혀있기는 하지만, 사실은 문자든 뭐든 다 들어갈 수 있어요.


변할 수 있는 수라는게 지금은 잘 이해가 안가실 테니

아래 예제를 따라하면서 배워볼께요 ^^


자 확인 누르셨나요?


뭔가 오렌지색으로 이것저것 나오는군요.


일단 내버려두시고, 다시 노란색의 제어로 돌아와 주세요.

밑에 쭈욱 보다 보면


이런 블럭이 보이실 꺼에요.

제어문인데요.

이걸 1초 기다리기 밑에다가 한번 붙여넣어 볼께요.


슥삭 하고 붙으면서, 반복 안에 들어갔죠?

성공한 겁니다. ^^

그런데 가만히 보니까

만약 <> 라면 블럭 안에는 육각형이 들어가 있어요.

그럼 끼워넣을 수 있는 육각형을 찾아봐야겠군! 이라는 느낌이 오시나요? ^^

육각형은 초록색의 '연산' 안에 있습니다. ^^


연산탭으로 들어오셨다면

이렇게 생긴 블럭을 찾으세요.

그리고 '만약 <> 라면' 안에 끼워 넣으세요!!

철커덩 붙었나요?

그럼 지금 블럭 모양이

요롷게 생겼죠?

자 드디어 우리의 변수가 활약할 차례가 왔군요.

다시 변수탭에 가셔서 아까 만든 batshape를 초록색 블럭 왼쪽에 끼워넣으세요.


그리고 합체했으면 이제 모양을 바꾸어봐야겠죠?


이제는 익숙하신 모양 바꾸기를 끼워넣읍시다.

만약..안에 모양 bat2-b로 바꾸는걸 끼워넣고,

아니면..안에 모양 bat2-a로 바꾸는걸 끼워넣자구요.

그리고 실행을 해 봅시다!


... 하아 왜인지 모양이 계속 bat2-b군요..

왜일까요?

처음에 초록색 깃발이 클릭이 되면,

batshape라는 변수값이 0입니다.

그리고 아까 끼워넣었던 '만약'...에서

batshape값이 0이면 모양을 bat2-b로 바꿔라! 라고 명령했었죠?

컴퓨터는 충실하게 명을 따른 죄밖에 없네요 ㅠㅠ


그러면 어떻게 해야 할까요?

간단하죠.

batshape값을 바꿔주면 됩니다.!

지금 보이는 모양이 박쥐가 날개를 접고 있는 모양이라면

다음 할 차례는 박쥐가 날개를 펴고 있는 모양이야! 라는 뜻으로

batshape에다가 '넌 이제부터 1이야'라고 해줍니다.

반대로 지금 박쥐가 날개를 펴고 있다면

다음 할 차례는 박쥐가 날개를 접고 있는 모양이야! 라는 뜻으로

batshape에다가 '넌 이제부터 0이야'라고 해주면 되고요.

가만히 보니까 batshape는 프로그램이 진행되는 동안 0도 됐다가 1도 됐다가 하네요?

아항. 변하는구나.

그래서 변수구나..하는거에요 ㅎㅎ

어려우신가요? ^^;;



결국 최종적으로는 위와 같은 모양이 되는데요.

오늘 한게 조금 어려울 수도 있으니까, 몇번 생각해보시고 따라해 보세요 ^^

2011.02.13. By RL.PS

저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/11 15:30 RL.P rogramming/Scratch


















에서 이어집니다.

오늘은 요런걸 만들어 볼껍니다.


요렇게 박쥐 두마리가 있구요.


빨간색으로 테두리쳐진 녹색 깃발을 누르면

박쥐가 조금씩 조금씩 이동해서 화면 가운데로 가는걸 만들어 볼꺼에요.




처음 스크레치를 켜면


오른쪽에 항상 고양이가 버티고 있죠?

하앜. 매일 봤더니 지겨워질라고 하는거에요.!

이렇게 하고 싶은 심정!

그래서 좀 딴거 없나 하고 두리번거리기 시작합니다.



아래에 보니까 회색바탕에 고양이가 보이는군요.

우클릭을 해 보면 요런 화면이 나타납니다.

과감하게 삭제 버튼에 마우스를 가져대시고 왼쪽 클릭하세요. (1)

고양이가 무대에서 지워져 버렸어요!  (2)

그럼 이제 딴걸 좀 추가하기 위해서 (3) 을 눌러봅시다.

(3) 위에 마우스를 올려보면 '새로운 스프라이트 파일 선택하기'라고 나와요 :)


파일 선택 화면이 나타나요.

스크래치는 기본적으로 그림을 몇개 제공하는데요.

일단 Animals 폴더에는 말그대로 짐승들

Fantasy 폴더에는 마녀라던가 하는 빤따지 세계에서 나올법한 것들!

... 등 여러개가 있으니까 하나씩 눌러보면서 확인해 보아요.

Animals 폴더를 눌러봅시다.



박쥐가 나왔네요!

그뿐만 아니라 뭐 벌이나 버팔로 이런것도 잔뜩 있으니까 스크롤바를 내리면서 확인해 보세요.

단 지겨운 고양이도 있으니까 주의! ^^;;

일단은 제일 첫번째에 있는 회색박쥐를 선택해 볼까요?




그리고 다시 새로운 스프라이트 파일 선택하기 를 눌러서

이번엔 까만 박쥐를 소환해 봅시다.


아까 선택했던 회색 박쥐하고 같이 무대에 두둥 하고 나왔군요.

자아 이제 주연들은 다 준비가 되었구요.

처음 목표 기억하시나요?

박쥐가 찔끔찔끔 오른쪽으로 움직여야 하죠!

오른쪽 하단의 회색 박쥐를 클릭하면 하얀색 빛이 가운데로 모일꺼에요.


그러면 가운데에 있는 '스크립트' 에 대고



먼저 '제어'를 누르세요.

그럼 아래 이것저것 블록이 나오죠?

녹색깃발 클릭되었을때를 왼쪽 클릭한 채로 가운데에 가져다가 둡니다.



이번에는 '동작'으로 가서 10만큼 움직이기를 가져다가 놓아 보아요.

[RL.P rogramming/Scratch] - 3. 뭐든 해보는게 장땡! 무턱대고 만져보자.

강좌 기억나시나요?

블록은 블록끼리 합체할 수 있다는거!

노란색의 블록 아래로 '10만큼 움직이기'를 노란색 블록 아래로 합체시킵시다!

그리고 다시 '제어' 로 가서 1초 기다리기..도 10만큼 움직이기 아래에 합체!


여태까지 끌어다놓은 블록의 뜻은

'녹색깃발이 클릭되었을때 10만큼 움직이고 1초 기다려'라는 뜻이에요.

우리는 회색 박쥐를 선택하고 이렇게 만들었으니까

회색박쥐야. 녹색깃발이 클릭되면 10만큼 움직이고 1초 기다려! 되겠습니다.

근데 가만히 생각해 보니까 고작 10만큼 움직이는건 너무 소심한 거에요!

다시 동작탭에 가서 10만큼 움직이는 블록을 끌어다 놓고,
제어탭에 가서 1초 쉬기 끌어다놓기를 반복합니다.


... 아 귀찮아.

그래서 이걸 복사하는 방법이 없나 생각해 봤어요.


다행히 있네요.

오른쪽에 있는 블록을 선택하고 오른쪽 클릭을 하면 복사 메뉴가 있지 뭔가요!

복사해서 아래쪽에 다시 붙일까요?


이걸 열두번 하고 나니까 이렇게 기다란 명령이 되었어요!


요기까지 오느라 수고하셨습니다.

자 이제 그만 하산! 하려고 보니까

이게 회색박쥐만 움직이고 검은색 박쥐가 안움직이네요 OTL

그래서 이번엔 검은색 박쥐를 선택하고


다시 똑같은 스크립트를 끌어다 두려고 하니까..이것참 이렇게 귀찮을 데가 없죠..


머리를 굴려봅니다.

역시 가만히 생각해 보면 답이 나오죠.

우리가 한 일은,

10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->
10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->
10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->10 이동 -> 1초 기다리기 ->
10 이동 -> 1초 기다리기 ->10 이동

이였네요.

응? 가만히 보니까 똑같은게 반복되잖아?!

간추려 보면

[10 이동 -> 1초 기다리기] 가 10번 반복되는 거네요.

오오 이런게 있었군.. 이라고 생각하면서

반복시키는거 없을까? 컴퓨터는 반복의 천재라던데..

라고 스크립트 블록을 뒤적거려 봅니다.

그리고 이윽고 발견하게 되죠.

비밀은 반복 10회!


위 그림과 같이 블록을 만들어 냈습니다. 두둥.

이제 정말 다 되었어요.

녹색 깃발을 눌러보면



박쥐 두마리가 10만큼 오른쪽으로 갔다가, 1초 쉬고 또 10만큼 오른쪽으로 가는걸
열번씩 반복하는군요!


이런 나이스한 프로그램을 만든것에 감동하면서

스크레치를 그냥 끕니다.

이러면 다음에 켰을때 내가 열심히 만들어놓은 게 다 지워져버리는 불상사가 생기죠.


그래서 조 위에 있는 빨간색 테두리의 디스켓 모양을 눌러봅니다.

사실 뭐 요새는 디스켓같은건 없지만 옛날부터 저건 저장버튼이라는 뜻이니까

그냥 눌러보면 프로젝트를 저장할 위치와 이름, 그리고 정보를 써 넣을 수 있어요.

기본적인 위치는 내문서\Scratch Project 에 지정되어 있고, 물론 바꾸셔도 됩니다.


오늘도 수고하셨어요.

담에 봐요 :)


2011.02.11. By RL.PS
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/05 08:30 RL.P rogramming/Scratch
















에 이어집니다.

IDE를 설명할 때

UI가 이렇게 생겼으므로, 이건 뭐고 이건 뭐고..라고 설명해봤자

어차피 잘 안보실꺼라는거 자알 압니다. ㅎㅎ

그리고 나중에 필요할 때 찾아보게 될 것이라는 것도요.

그래서 이 간단한 인터페이스에 대해서는 설명을 나중으로 미뤄서

그냥 참고자료 같은거나 만들때 끼워넣겠습니다.

일단 무작정 실행시켜 보죠.

시작 -> 모든 프로그램 -> Scratch -> Scratch 로 가셔서 실행시켜봅니다.


이제는 익숙한(?) 화면이 나옵니다.

이것만 봐서는 뭐가뭔지 전혀 알 수가 없으니,

그냥 무조건 던져봅니다.


오른쪽의 고양이를 마우스를 클릭한 상태로 잡고 흔들어봅니다.

오오오오 움직입니다.

유심히 쳐다보면, 빨간색으로 테두리를 쳐 놓은 숫자가

바뀌는걸 알 수 있는데요.

이건, 고양이의 위치가 어디있냐를 나타냅니다.

그러니까, 가만히 냅두는 고양이의 위치가

x : 0, Y: 0이었는데,

이걸 잡고 흔드니까 x : -153, y : 112가 되었습니다.

참고로 x는 가로 좌표, y는 세로좌표입니다.

가운데를 원점으로 잡고,

고양이가 왼쪽으로 153만큼, 위쪽으로 112만큼 갔다는 소리네요.

즉, 원점을 기준으로 가로축을 볼 때 왼쪽은 -, 오른쪽은 +가 되는군요.

마찬가지로, 세로축은 위쪽이 +, 아래쪽이 -가 되겠네요!


살포시 감동해 주면서 다른걸 해봅니다.


왼쪽에 보니까 이상하게 생긴게 있어요!

동작/제어/형태/관찰/소리/연산/펜/변수 라는게 있네요.

뭐가 뭔지는 차차 알아보기로 하고요.

각각 버튼을 클릭할때마다 위의 사진들처럼 아래 목록이 바뀌죠?

이건 뭥미? 라고 하지 말고,

한번 슬슬 끌어다가 놔 볼께요.


'동작' 버튼을 누르니까 나오는 블럭들을 슬슬 끌어다 놔 봤어요.

아무꺼나 대충 가져다 놓은거니까 블럭 내용은 크게 신경쓰지 마시고 ^^;;

내친김에 '제어'에 있는 것도 적당히 끌어다가 놓습니다.

보시면 아시겠지만,

'동작' 블럭은 파란색으로, '제어' 블럭은 오렌지색으로 되어있네요.

어머나 신기해라.


그런데 가만히 보니까, 이게 위아래가 맞아떨어질것 같이 생겼네요.

레고처럼 블럭이 철썩 합체 할 것 같아요!

그래서 한번 끌어다가 놔 봅니다.

위 그림은 '동작' 블럭을 통채로 클릭해서 '제어'블럭중에 '클릭되었을때' 에다가

끌고 있는 그림이고요.


이건 두개가 '철썩' 붙은겁니다.

호오, 철썩 달라붙기도 하는군요.

오오, 신기하다.. 정도만 알아두고 넘어갑시다.


그런데 가운데 판때기에 보니까, '스크립트' 말고도 모양/소리/ 라는 탭이 있네요?

클릭해 봐야죠?


그냥 보니까 이제 '촉'이 오지 않나요? :)

말 그대로 모양하고 소리를 설정할 수 있는 것 같아요.


으흠, 기능이 이정도 있구나..좋았어!

라고 컴퓨터를 끄면 곤란하죠.

뭔가를 해봐야 하지 않겠어요?

그런데 글이 너무 길어졌으니까 다음시간에 계속할께요.

담에 뵈요~

2011.02.05 By RL.PS
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/04 08:30 RL.P rogramming/Scratch


에 이어 계속 갑니다.

물론 뭔가를 개발하기 위해서는 , 개발 툴부터 설치해야 합니다.

노트패드로 뭔가를 할 수는 없으니까요(...)

아니 뭐 솔직히 할 수는 있는데, 왜 굳이 해야 하는지는 잘 모르겠;;;

먼저 MIT Lab의 스크래치 사이트에 접속해 보죠.

요런 화면이 나옴니다.


오오 한글입니다. 그저 고맙네요.

가운데 제가 친히 그림판에서 그려넣은(...)  빨간색 테두리 부분을 클릭합시다.



등록 화면입니다.

저는 귀찮았기 때문에 그냥 아무것도 작성 안하고

가장 아래에 스크래치 내려받기 버튼을 눌렀습니다.

나중에 강좌가 진행되면서

다시 회원가입을 하고 공유하는 것을 배워볼 꺼에요 :)


각 운영체제에 맞는 설치 버전을 고르시면 됩니다.

첫번째는 Mac OS X

두번째는 Windows

세번째는 우분투 리눅스네요.

대부분 두번째일꺼라고 생각합니다.


다운받으신 후 다운받으신 파일을 실행시키시면


셋업 위자드가 나왔습니다.!

그냥 소개글이고, Next를 누르시면 다음으로 진행됩니다.

참고로 저 고양이는 Scratch의 심볼이에요. ^^


어디다가 설치할 지 묻는군요.
 
뭐 그냥 Next 하죠.
 
다른 프로그램들도 대부분 여기에 설치되니까요.



메뉴 이름을 뭘로 할꺼냐고 묻는데,

그냥 있는 그대로 하는게 나중에 잊어버리지도 않고 편합니다.

뭔가 설치를 하고 있어요!

설치가 끝나면 Next를 눌러주세요.


끝났다고 나오네요.

위의 체크상자는 인스톨이 끝난 후 바로 스크래치를 실행할 것이냐고 묻는 것이고,

아래 체크상자는 단축 아이콘을 만들꺼냐고 묻는거에요.

기왕 설치했으니 한번 봐야겠죠?

둘다 체크된 상태로 Finish를 누릅니다.



짠, 인스톨할때 나왔던 고양이가 그대로 나와있네요.


이걸 뭣하러 일일이 적어놨냐고 하실수도 있는데..

이 강좌는 어른 뿐만 아니라 아주 어린 학생들도 볼 수도 있습니다.

그리고 연세가 많으시거나, 컴퓨터를 잘 못쓰는 사람이 볼 수도 있죠.

그런분들을 위해서 그냥 적어둔 것이니

잘 하시는 분은 태클은 사양할께요 ^^;;


2011.02.04. By RL.PS
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/03 08:30 RL.P rogramming/Scratch
Scratch 라는게 있습니다.

스크래치.. 라고 읽으며

기스..이딴게 아니라

프로그래밍을 하는 환경입니다.

[RL.S eminar] - 스크레치 데이에 구경가게 되었습니다.~
[RL.S eminar] - 스크래치 데이 후기 - 멋진경험.

에서 적어뒀었던 것인데, 한참 팽개쳐놓고 있다가

이제서야 다시 한번 잡아봅니다.


이렇게 생겼습니다.

기본적으로 어린이들을 위한 개발 툴이지만,

프로그래밍 쪽에 전혀 연고가 없는 이들을 위해서

교육용 교제로 쓰기에는 최적이라고 판단했습니다.

디자이너분들이 플래시를 배우실 때

모션쪽은 쉽게 배우시는데 반해 액션쪽은 많이 어려워하는 걸 보고는

아무래도 영어 문장만 난무하는 현업 프로그래밍보다는

비주얼적인 면이 강한 것이 접근성이 좋다고도 생각했고요.

그래서 일단 어떻게 되든 간에 연재를 시작해 보려 합니다.


왜 부제가 디자이너/기획자에게 프로그래밍 가르치기.. 냐면,

실제 현업에서 일을 하다 보면 이해도의 차이로 인해서

서로 말도 안되는거 가지고 부딛히는 현장을 많이 보고 겪었기 때문입니다.

저는 실제로,

디자이너가 자신의 디자인이 제대로 반영되지 않는다고 해서

코드를 고쳐야 했던 어처구니 없는 기억도 가지고 있습니다.

기획자가, 이걸 딱 누르면 이렇게 펼쳐져서 이게 보이면 돼..라고만 말해서

제 나름대로 구현을 해놨더니

자신이 언제 이렇게 말했냐며 화를 내는것도 경험했고요.


프로그래밍은 결국은 '논리'입니다. 앞뒤가 맞아 떨어지기만 하면 되요.

그런데 안타까운건, 컴퓨터는 인간 논리같은건 이해 못합니다.

그냥 0 혹은 1로 표현되는 Bool 논리만 이해할 수 있죠.

참/거짓으로 판단할 수 없으면 이미 컴퓨터는 못알아듣습니다.

이런점을 다른 직무이기 때문에 이해하지 못하는 것을

서로 이해했으면 좋겠다..라는 취지에서 글을 씁니다.


왜 굳이 개발자의 입장에서 글을 쓰느냐..라고 하실지도 모르지만,

1. 저는 개발자입니다. 개발자 입장밖에 몰라요(...)

2. 결국 최종 구현은 개발자가 합니다.
 
클라이언트가 맘이 바뀌어서 구현체가 180% 뒤집어져도

그걸 최종적으로 산출물로 만들어내는건 개발자기 때문입니다.


나중에는 디자이너가 개발자에게 가르치기..라던가,

기획자가 멋진 기획을 개발자에게 전달하는 법.. 등도 연재되면 더 좋고요 :)


시작할까요?


2011.02.03. By RL.PS

저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
prev 1 next