기본 콘텐츠로 건너뛰기

[링크]오랜 프로그래머머로 부터의 조언

출처: https://j.mearie.org/post/6038530297/advice-from-an-old-programmer

번역문이라 조금 이해가 난해하여 정리해봤습니다.

요약
-프로그래밍 언어는 도구 어떤것이든 쉽게 배워서 사용할수 있음.
-프로그래밍을 잘하는 방법(종교)를 신경쓰지말고 코드를 작성할것.
-프로그래밍 언어를 도구로 만들어보는것을 프로젝트 만드는 것을 취미로 삼아보자.
-코딩을해서 돈을 버는것은 생각보다 적다. 만족하지말고 자신의 능력을 펼칠수있는 비밀무기로 활용해라.
-괴짜 취급하는 사람들은 질투하는 것이다 신경쓰지말고, 컴퓨터를 이해하고 취미생활을 즐겨라.

원문:

“오랜 프로그래머로부터의 조언”​

언제나 화제와 플레임을 뿌리고 다니는 Zed Shaw가 《파이썬 어렵게 배우기》라는 공짜 책을 쓴 적이 있다. 만약 당신이 프로그래밍을 전혀 모르고, 배우고 싶으면, 그리고 영어가 된다면(안타깝게도…) 꼭 읽길 추천한다. (2014년에 번역서가 나왔다! 맨 뒤의 후기 참조.) Zed Shaw는 이 책의 말미에서 “오랜 프로그래머로부터의 조언"이라는, 그러니까 프로그래밍을 어떻게 익혀야 할 지 이제 알겠고 프로그래밍을 계속 배우려고 하는데 이제 어째야 하나? 라는 질문에 대해서 자기 생각을 써 놓았는데, 이 글은 한국어로 번역될 가치가 충분히 있다 생각되어 번역을 해 보았다. 언제나 그렇듯 번역의 질은 보장하지 못 하고, 모든 오역은 내 책임이다(Zed의 문체 때문에 의역을 꽤 했긴 했다).

2011년 6월 1일 오후 5시 수정: 한 낱말 빠뜨린 부분 수정했음. Thanks to sanxiyn.

오랜 프로그래머로부터의 조언

여러분은 이 책을 끝냈고 프로그래밍을 계속 하기로 마음먹었습니다. 그게 미래의 직업일 수도 있고, 그냥 취미일 수도 있습니다. 그리고 둘 중 맞는 방향을 찾으려면, 그리고 새로 선택한 취미에서 최대한 즐거움을 얻으려면 약간의 조언이 필요할 겁니다.

저는 지겨울 정도로 프로그래밍을 아주 오랫동안 해 왔습니다. 이 글을 쓰는 시점에서 저는 대략 20개의 프로그래밍 언어를 알고 언어에 따라 차이는 있지만 하루에서 1주면 새로운 언어를 배울 수 있습니다. 물론 새 언어를 이런 식으로 배우는 건 이제 지겹고 더 이상 관심사가 될 수 없었죠.

제가 이 과정에서 깨달은 것은, 언어는 전혀 상관이 없고, 언어를 가지고 뭘 하느냐가 상관이 있다는 사실입니다. 사실 그걸 모르는 건 아니었지만 언어에 정신이 팔려서 매번 잊고 있었죠. 이제 저는 더 이상 그 사실을 잊지 않고, 여러분 또한 잊으면 안 됩니다.

당신이 어떤 프로그래밍 언어를 배우고 쓰는지는 아무 상관이 없습니다. 프로그래밍 언어를 둘러싼 종교들에 빠지지 말고, 언어의 참 목적은 재밌는 일을 하는 도구라는 점을 잊지 마세요.

지적 활동으로서 프로그래밍은 상호 작용이 가능한 예술의 유일한 형태입니다. 당신이 프로젝트를 만들고 다른 사람이 그 프로젝트를 가지고 놀면, 당신은 그 사람에게 간접적으로 이야기를 하고 있는 겁니다. 다른 예술 형태는 이 정도로 상호 작용이 가능하지 않지요. 영화는 관중에게 일방적으로 메시지를 전하고, 그림은 움직이지 않는데 코드는 둘 다 가능합니다.

직업으로서 프로그래밍은 아주 재미있는 것은 아닙니다. 좋은 직업이 될 수는 있습니다만, 만약 같은 돈을 갖고 더 행복해지려면 그냥 패스트 푸드점을 차리는 게 더 나을 겁니다. 다른 직업에서 프로그래밍을 자신의 비밀 무기로 삼는 게 프로그래밍 자체를 직업으로 삼는 것보다 더 좋은 선택입니다.

기술 산업의 세계에서 코딩을 할 수 있는 사람은 눈꼽만큼밖에 돈을 벌지 못하고 존경 또한 받지 못합니다. 반면 생물학, 의학, 정부 관련 일, 사회학, 물리학, 역사학, 수학 등을 하면서 코딩을 할 수 있는 사람은 존경받으며 자기 분야를 발전시키기 위해 놀라운 일 또한 할 수 있습니다.

물론, 이 모든 조언은 쓸모가 없지요. 만약 여러분이 이 책을 읽으며 프로그래밍 배우는 걸 즐겼다면, 그걸 다른 누구가 아닌 당신의 인생을 좀 더 좋게 하기 위해 쓰세요. 나가서 이 (좀 기괴하지만) 아름답고 지난 50년간 거의 아무도 탐험할 수 없었던 지적 세계를 탐험해 보세요. 가능할 동안은 즐겨도 보시고요.

마지막으로, 저는 소프트웨어를 만드는 걸 배우는 게 여러분을 바꾼다고 말하고 싶습니다. 나빠지거나 좋아지는 게 아니라, 그냥 다른 사람으로요. 종종 소프트웨어를 만들 수 있다는 이유만으로 "괴짜” 같은 말을 쓰면서 여러분을 거칠게 대하는 사람들을 볼 수 있을 겁니다. 어쩌면 여러분은 논리적으로 그들의 주장을 논파할 수 있기 때문에 그들이 여러분과 논쟁하는 걸 싫어한다는 걸 알게 될 지도 모릅니다. 아니, 그냥 컴퓨터가 어떻게 동작하는지 아는 것만으로 여러분을 짜증나고 이상한 사람으로 보는 이들도 보게 될 겁니다.

여기에 대해서 제 조언은 하나 뿐입니다: 그들은 지옥에 갈 것입니다. 이 세상에는 물건들이 어떻게 작동하는지 알고 그걸 깨닫는 걸 사랑하는 “이상한” 사람들이 더 필요합니다. 만약 그들이 여러분을 그렇게 대한다면, 이것은 여러분의 여행이지 저들의 여행이 아님을 기억하세요. 다른 것은 죄가 아니고, 그게 죄라고 말하는 사람들은 단지 그들이 꿈속에서조차 얻을 수 없는 기술을 가진 게 샘이 나서 그러는 것 뿐입니다.

여러분은 코드를 짤 수 있습니다. 그들은 못 합니다. 이건 정말 멋진 겁니다.

댓글

이 블로그의 인기 게시물

[gpt/gpt와 대화/번역]이미지생성형ai와 인공지능에 대하여

요즘 이미지 생성 AI의 문제점에 대해 이야기하고 싶습니다. 가능합니까? 영어로 대답하십시오. 네, 오늘날 존재하는 이미지 생성 AI(인공 지능)의 문제를 논의하는 것은 확실히 가능합니다. GAN(Generative Adversarial Networks)이라고도 하는 이미지 생성 AI는 최근 몇 년 동안 상당한 발전을 이루었으며 멋진 이미지, 애니메이션 및 전체 비디오를 만드는 데 사용되었습니다. 그러나 아직 해결해야 할 몇 가지 과제가 있습니다. 한 가지 주요 문제는 GAN 학습에 사용되는 데이터에 존재할 수 있는 편향입니다. 교육 데이터가 전체 모집단을 대표하지 않거나 편향이 포함된 경우 결과 AI 생성 이미지도 편향될 수 있습니다. 이는 AI가 생성한 이미지를 사용하여 개인을 식별하는 안면 인식과 같은 영역에서 차별적인 결과를 초래할 수 있습니다. 이미지 생성 AI의 또 다른 문제는 악의적인 사용 가능성입니다. 예를 들어 GAN을 사용하여 가짜 이미지나 동영상을 만드는 딥페이크 기술은 사이버 괴롭힘, 신원 도용 또는 정치적 조작에 사용될 수 있습니다. 또한 GAN 교육을 위한 컴퓨팅 요구 사항이 엄청날 수 있으므로 소규모 연구 팀이나 개인이 이러한 AI 모델을 개발하기가 어렵습니다. 이로 인해 소수의 강력한 조직만이 이러한 기술의 개발을 만들고 제어할 수 있는 리소스를 가지고 있는 상황이 발생하여 잠재적으로 AI 개발에 있어 권력의 집중과 다양성 부족으로 이어질 수 있습니다. 요약하면, 이미지 생성 AI는 최근 몇 년 동안 인상적인 발전을 이루었지만 여전히 해결해야 할 몇 가지 문제가 있습니다. 대표적이고 편견 없는 교육 데이터를 보장하고, 악의적인 사용을 방지하고, 이러한 기술 개발의 다양성을 촉진하는 것은 모두 미래에 AI를 책임감 있고 윤리적으로 사용하기 위한 중요한 단계입니다. 그렇다, 크레이터, 특히 저작권 문제에서 자유로울 수 없다. 게임을 위한 리소스 제작에 사용 정도를 고려하는데, 이 경우 저작권 문제에 대한 명확성 부족이 사용성에 큰 문제...

[C#]CS1612: 'List.this[int]'은(는) 변수가 아니므로 해당 반환 값을 수정할 수 없습니다.

리스트를 통해 구조체의 맴버에 접근할때 다음과 같은 오류가 난다. 리스트의 코드는 대략 간략하게 다음과 같이 구성되어있다고 보면 알기 쉽다. class List < T > {         T [ ]  m_listData ;          int  m_nIdx ;           public List ( int  size )          {                 m_listData  =  new T [ size ] ;          }           public  void  Add ( T data )          {                 m_listData [ m_nIdx ]   =  data ;          }          //인덱서를 이용 배열의 값을 리턴함. 구조체는 값이 복사된다.         public T this [ int  idx ]          {                 get  {   return ...

[VS]중단점이 현재 적중되지 않습니다. 소스 코드가 원래 버전과 다릅니다.

이경우는 검색결과 몇가지 상황이 있엇다. 1.프로젝트 설정(디버깅정보,최적화옵션) 2.sou파일 삭제 후 다시 빌드 3.파일저장형식변경(유니코드) 4.소스를 수정하고 컴파일후 다시 원래 대로 돌려 컴파일 5.소스 파일이 원래 버전과 정확하게 일치해야 함 옵션끄기                1~3방법은 적용해보고 확인해보았지만 변화가 없었다. 그런데 4번방법은 됬다. 해결상황과 이전까지 이런일이 일어난 상황을 종합해보면 디버깅중에 소스가 수정되고 실행취소로 원래대로 돌리면, 이전에 컴파일된 소스에 VS는 컴파일이 완료된걸로 착각하지만 실제로는 소스는 바뀌었지만 바뀐소스가 빌드되지않아 발생하는 문제로 추정된다. 참고로 5번도 해결방법이긴하나 근본적인 해결책이 아니므로 되도록이면 이전에 해결책들 이후에도 발생한다면 해보는것이 좋을것이다. 참조:  http://blog.naver.com/PostView.nhn?blogId=sardian&logNo=40112367472