2016년 9월 27일 화요일

[차이점] 개발자 vs 프로그래머 vs 컴퓨터 사이언티스트 vs 소프트웨어 엔지니어.

개발자? 프로그래머? 컴퓨터 사이언티스트?

이들은 업무적인 차이가 분명히 존재하는 직업군들이다.
헌데 국내에서는 이상하게도 모두들 개발자라 부른다.

국내에서는 'Developer'와 '개발자'가 미묘한 차이가 있는 것 같기도 하다.
아마도 '개발자'라는 의미가
좀 더 넓은 의미로서 '컴퓨터로서 뭔가 만드는 사람' 전체를 아우르는 것인가 싶었다.

하지만 현실은 달랐다.

대부분의 코더나 프로그래머들은 스스로를 정말 'Developer'라고 인지하고 있었다.
알고리즘은 멀찌감치 밀어둔채, 정말로 스스로를 'Developer'라 자부하는 것이었다.
기가막혔다.

아무튼 해외에서는 이들 차이가 분명하다.
아래 밴다이어그램은 이들의 차이를 가장 잘 설명한다고 보여진다.


(사이트 내용 중)

  • Coders - Can pretty much figure out it. It'll work, but it won't be pretty.
  • Hackers - usually low level folks, skillful, with detailed understanding of some area deeply, often scarily deeply.
  • Programmer - Write code and understand algorithms. Often work alone and well.
  • Developer - Are the best generalists, can use lots of different systems and languages and get them to talk to each other. Are true and broad professionals, work with people, and communicate well.
  • Computer Scientist - Need to be able to prove how computers work, at a theoretical level. Are usually math people also.


보면 알겠지만, 각 직업군은 보유 스킬이 약간씩 다르다.

정확한 이해를 돕기위해 각 직업군을 설명해 보자면,
  • 코더(Coders): 막 입문한 프로그래머로서 필요한 소스를 웹검색이나 책을 통해 가져다 쓰고 결과가 나오면 만족한다. 말 그대로 주어진 지시에 대해 구현이 가능하다.
  • 프로그래머(Programmer): 좀더 능숙한 코딩이 가능하며 그저 가져다 쓰는 입장에서 벗어나 수 많은 노하우로서 상황에 따른 최적 소스를 구현할 줄 알고 에러 대처 능력이 뛰어나다. 최종 목적에 대한 이해도가 높아 빠른 속도로 최적 제품의 생산이 가능하다.
  • 컴퓨터 사이언티스트(Computer Scientist): 컴퓨터가 이론적 수준에서 작동하는 방법을 입증 할 수 있어야 한다. 수학적 지식은 기본이며 실제 구현보다는 이론적인 구현에 뛰어나다.
  • 디벨로퍼(Developer): 이들은 폭 넓은 전문가로서 서로 다른 시스템에 대한 지식이 뛰어나고 다양한 언어를 사용할 줄 알며 그들 사이의 이야기를 이해/설명할 수 있다. 
  • 소프트웨어 엔지니어(Software engineer): (위 밴다이어그램에는 없지만;) 소프트웨어 개발자(Software Developer)라고도 하는데, 이들은 사용자 요구를 받아 소프트웨어를 설계/분석하고 우수한 품질을 위해 테스트를 반복한다. 이들은 직접 코딩하기도 하지만 대부분 프로그래머들에게 지침을 제공한다. 컴퓨터에 필요한 운영체제 전문기술자는 시스템 소프트웨어 개발자(Systems software developers)라 불린다.

각각의 역할에 있어 어느 역할이 대단하고 못하고의 기준은 사실 없다.
대신, 어찌보면 다음과 같은 진화(?)단계가 존재할 수도 있다.

Coders → Programmer → Developer

그래서인지 모두들 스스로를 Developer라 자위하는게 아닌가 싶다.
근데 이해가 안되는건, 수학이론이나 알고리즘에 대한 지식은 멀찌감치 밀어둔채, 스스로를 Developer라 불리고 싶어한다는 것이다.

안타깝다.

꼭 우수한 Developer만 인정받는다는 보장은 없다.
고수준의 Programmer는 Developer 못지않은 능력의 소유자가 된다.
마치 Programmer가 Developer보다 한참 질떨어지는 것 마냥,
천시하고 부끄러워 하지 말자.

비행기 조종사는 멋지고 비행기 정비사는 구린듯 떠들어대는 유아적 발상일 뿐이다.

직업에 귀천이 어디 있으랴..


사람들이 가끔 묻는다.

"전 수학을 못하는데 프로그래머가 가능할까요?"

내 대답은 "YES"이다. 당연히 가능하다.
수학 몰라도 잘 만들어진 라이브러리 적절히 사용하면 충분히 멋진 개발이 가능하다.

헌데 만약, 뭔가 새로운 것을 창조해 내고 싶다면.
그런데 수학을 모른다면.
그렇다면 당신은 낭패를 볼 것이다.

수학을 못하는데, 수학은 어려운데, 말들을 하겠지만,
여기서의 수학이란 우리가 보편적으로 알고 있는 교과서적인 '수학'과는
약간의 차이가 있다. (우리나라 수학교육의 병폐가 아닐까 한다.)

복잡한 공식을 외워야 하는 그런 수학을 말하는 것이 아니다.
수학개념은 물론 기본이고 그 위에 논리적 사고능력이 배양되어야 한다.

진정 개발자(Developer)를 목표로 한다면, 수학이나 알고리즘 공부를 게을리하지 말자. ^^
(흠, 결국 수학공부를 해라! 라는 의미가 되어버렸네;)





2016년 9월 22일 목요일

코스몰로지 - 은하 성장게임

얼마전 육성게임류를 찾던 중, 코스몰로지라는 게임을 찾게 되었다.
별을 키워나가고 별에 원주민이 오밀조밀 꼬물꼬물 하는게 귀여워서 한번 해 봤다.

코스몰로지. 그것은 정체모를 게임이었다. ㅠㅠ

코스몰로지에는 먼저 4개의 은하가 존재한다.

코스몰로지 4개의 은하, 곧 메인화면

그리고 각각의 은하는 내부에 몇개의 혹성들을 가지고 있다.
각각의 은하는 다음과 같이 생겼다.

태양계여름과 가을의 은하

봄가 가을의 은하우주의 끝. 블랙홀.


오른쪽 상단에는 채굴장이란것도 있다.
여기서 다이아를 얻을수 있는데,
정말 단순하게 그저 다다다닥~ 쳐대면 보석이 떨어진다.

채광하는 원주민은, 주기적으로 대화를 하는데.. 이거 좀 귀엽다. ㅎㅎ

채굴장


광고도 뜬다. 하단엔 항상 베너가 있으나, 거기에 더해 지역을 이동할때,
확률적으로 다음과 같은 베너가 뜬다.

광고배너


각각의 혹성은 회수한 자원을 이용하여 성장이 가능하다.
3레벨이 되면 매우 귀여운 원주민이 뛰어다닌다. ㅎㅎ

우리별 지구(Lv 10)의 모습


----------------------------------
끝.


...

끝? 왜 벌써 끝이냐고? 해보면 안다.

모든 혹성을 최고레벨(Lv.10)까지 올렸다면,
당신은 코스몰로지에서 더이상 할 것이 없다.
게임 끝ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

난 행성 레벨업 다하면 새로운 스테이지가 열린다던가, 하는 뭔가를 기대했다.
설마 이렇게 끝나진 않겠지? 뭐라도 있겠지? 설마? 설마?

하지만 아~~~~~~무 것도 없다. (그저 돈만 회수하는 족족 모이는..ㅋㅋㅋㅋㅋ)


에피소드:
몇일 접속 안하다가 업데이트가 있었다. (뭘 업데이트한걸까;;ㅋㅋㅋㅋ)
각 행성마다 자원이 Full로 쌓여있는데, 한 행성은 마이너스였다?! 헐..
버근가보다. 아무튼 수집하기를 눌렀더니 소지자원이 감소됐다.ㅋㅋㅋㅋㅋㅋ아옳~

팁:
이 게임을 즐겁게 하기 위해서는,
그냥 깔지를 마라. 멘탈 망가진다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이 게임은 정신수양을 위해 도닦는 기분으로 하는 게임이었던 것이다.ㅋㅋ
(아, 어떤사람이 말하길 아이랑 하면 좋다는 말을 하던데.. 과연?! 의문이;;ㅋ)







2016년 9월 21일 수요일

リフレインボーイ / ALL OFF (MP3 Download link)

リフレインボーイ / ALL OFF

リリース: 2016/08/31


Download:
ALL OFF - Refrain Boy ( TV Size ) : Solidfiles | DirectALL OFF - Refrain Boy ( Extended ) : Solidfiles | Direct

エンディングを担当するのはTVアニメ 「ヘヴィーオブジェクト」 のオープニングテーマ
「One More Chance!!」 でメジャーデビューし、同アニメの新オープニングテーマ
「Never Gave Up」 も担当した、ALL OFF

今回担当するエンディングテーマのタイトルは 「リフレインボーイ」
躍動感、疾走感に溢れるサウンド、本作品用に書き下ろされた歌詞に期待が高まる !


≪収録曲≫
【CD】
01. リフレインボーイ
02. リフレインボーイ -English ver.-
03. リフレインボーイ -TV size-
04. リフレインボーイ -TEKINA remix-
05. リフレインボーイ -Instrumental-


2016년 9월 20일 화요일

25년만의 깨닳음

25년만의 깨닳음ㅋㅋㅋㅋㅋㅋㅋㅋㅋ






ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ



2016년 9월 19일 월요일

프로그래머와 수학의 관계?

아주 황당한 경험을 하게 되었다. (점입가경이랄까?)

아무리 직업의 세분화가 좀더 정밀해졌다고 하더라도 이건 좀 아닌가 싶은 일이 벌어졌다.

팀 사람들에게 프로그래밍 관련 알고리즘을 설명해야할 시간이 생겼다.
당연히 알고리즘은 수학이 빠질 수 없기에 수학적 설명을 곁들였다.
근데 이게 무슨 일인지 전부 먼산만 바라본다.
왜 관련도 없는 수학을 논하는가? 그저 배포된거 가져다쓰면 되는데, .. 하는 분위기..

회의 후 사람들은 내게 '수학을 되게 잘하시네요.' 라고 말한다.

'응? 난 수학이 아니라 알고리즘을 설명한건데?' 

수학 == 알고리즘?, 수학 != 알고리즘?, 수학 ⊆ 알고리즘!!


이상하다 정말.
내가 아무리 알고리즘이라 해도 사람들은 수학으로 받아들였다.

뭐 액면은 수학이긴 하지.. 흠..

더불어 자신에게 수학을 강요하지 말란다.
'데이터 사이언티스트'나 수학을 한다며, 자기들과는 분야가 다르다는 지론을 내세운다.

어떤이는 안드로이드 개발자란다.
어떤이는 시스템 개발자란다.
어떤이는 프론트 개발자란다.
어떤이는 자바개발자는 잘 가져다 쓰면 우수한 개발자라는 주장을 피력했다.
(이미 있는거 가져다 조립 잘하는게 어떻게 '개발'인지는 모르겠지만;;)

얼마 전에..

연구성향이 강한 사람이 있기에 '당신은 개발자 스타일이네요' 한마디 했더니,
"그 사람 빼고 나머지는 개발자 아니냐? 왜 비하하냐"며 매서운 눈빛으로 날 바라봤다.

(수학 모르고, 알고리즘 생각해본 적 없고,
배포된 소스를 한번도 직접 분석해본 적 없으면서 개발자 소린 듣고 싶은가 보다. ㅠㅠ)

많은 사람들이 수학에 대해 잘못 이해하고 있다.
수학은 그저 외워야하는 복잡한 공식이라고 알고 있다.

수학은 논리력이다. 

예를 들자면,
삼각함수를 이용해 데이터를 평준화 하거나 매출변화를 분석할 수 있다.
그저 직각 삼각형을 가져다놓고 의미 없는 나누기를 하는 '뻘짓'이 아니다.
전체 분포에서 일부 그룹들을 나누면 점유율이 나오고 이는 곧 코사인 결과가 나오게된다.
이전 데이터와 현재데이터를 비교한 변화량은 곧 탄젠트로 이어진다.

복잡한 공식의 문제가 아니라, 우리가 이미 알고 있을지 모르는 논리적 사고능력, 문제해결 능력을 표현하는 방법이 수학이라는 것이다.

알고리즘에 있어 수학을 모르면 그저 우주어가 적힌 논문일 뿐이다. 수학을 모르면 그저 남들이 만든 소스를 '설명서에 맞춰' 가져다 붙이는 것만 가능하게 된다.

물론 나도 수학을 잘한다고 말 못한다.
학창시절에도 수학을 그렇게 좋아하지 않았고, 가방끈도 짧은 내게 유일한 수학선생은 '수학정석' 이었다.

수학을 가르쳐준 선생이 문제인지 그 선생의 뜻을 이해하지 못한 내 문제인진 모르겠으나,
아무튼 난 직장생활 내내 수학정석을 데스크에 항상 올려두었다.

(쪽팔림? 그건 순간이다.)

이해가 가지않으면 외우지 못하는 몹쓸병에 걸린 난,
구구단을 다 익히는데 30년이나 걸렸다. (요새도 사실 가끔 해깔린다.. ㅜㅜ)
그런 내가 수학을 이해하기 위해 쏟은 시간과 노력은 정말 혹독했다.

아무튼,

수학을 못하면 프로그래머가 될수 없다?
프로그래머인데 수학을 못해도 된다?

결론은..

한국에서 수학을 못한다해도 '프로그래머'가 될 수는 있다.
하지만, 수학을 하지 않고서는 '개발자'가 될 수는 없다.

한국 교과과정에서의 '수학'을 하려하지말고, 
논리적 분석 능력이 바로 '수학'임을 깨닳아라.





2016년 9월 9일 금요일

Python에서 반각(half-width) 전각(full-width) 변환 #mojimoji


전각 ↔ 반각 변환에 좋은 놈이 있더라고.

이름하야 모지모지ㅋㅋㅋ!! ( mojimoji )


당연하겠지만, 설치는 이케. ( python3.x 는 pip3 )


1
pip install mojimoji


전각 → 반각의 경우는 이렇게 사용한다.

1
2
3
4
5
6
7
8
9
>>> import mojimoji
>>> print mojimoji.zen_to_han(u'アイウabc012')
アイウabc012
>>> print mojimoji.zen_to_han(u'アイウabc012', kana=False)
アイウabc012
>>> print mojimoji.zen_to_han(u'アイウabc012', digit=False)
アイウabc012
>>> print mojimoji.zen_to_han(u'アイウabc012', ascii=False)
アイウabc012


반각 → 전각의 경우는 이렇게 사용한다.


1
2
3
4
5
6
7
8
9
>>> import mojimoji
>>> print mojimoji.han_to_zen(u'アイウabc012')
アイウabc012
>>> print mojimoji.han_to_zen(u'アイウabc012', kana=False)
アイウabc012
>>> print mojimoji.han_to_zen(u'アイウabc012', digit=False)
アイウabc012
>>> print mojimoji.han_to_zen(u'アイウabc012', ascii=False)
アイウabc012


mojimoji의 좋은점이라 한다면, 빠른 처리속도라 할 수 있겠다.
다른 동일 라이브러리와 비교할때 상당히 빠른 처리속도를 보인다. ㅎㅎ


※ 근데 이넘 주의할 점이 있다는거. ㅠㅠ


위 결과를 보면 알겠지만, \나 `같은 특수문자는 변환이 안된다. 흠..

뭐 결국 이 경우도 유니코드를 직접 변환해서 해결하는 방식으로 바꿨다.
아. 결국 이걸 안쓰게 되었군. -_-;;;; 쳇.





2016년 9월 6일 화요일

python 에서 특수문자 유니코드 변환 #remove_non_ascii

유니코드를 변형하기 위해 다음과 같은 놈을 찾았다.

For you the get the most alike representation of your original string I recommend:


1
2
3
4
from unidecode import unidecode
def remove_non_ascii(text):
    #return unidecode(unicode(text, encoding = "utf-8")) #난 3.5니 text를 바로..
    return unidecode( text )


Then you can use it in a string:

1
2
remove_non_ascii("Ceñía") 
Cenia


오? 멋진데?
해서 혹시나 다른 언어를 시도해봤다.


1
2
remove_non_ascii("דותן") 
dvtn


오호?!?! 일본어는?!


1
2
remove_non_ascii("ありがとう") 
airigatou


캬~~~~~~~ 이거쓰자!

( … )

어 -_-? 잠깐만.
한국어는 -_-?


1
2
remove_non_ascii("한글도?") 
hangeuldo?

에라~ 그지같은.. -_-++ 이게 뭔 개그냐;

관두자 관둬~ unicode 하나씩 비교한다내가!