도구
제가 기억할 수 있는 한, 종교적인 플레임워가 컴퓨터 과학을 감염시켜 왔습니다.
기술적인 주제에 대해 논쟁하는 것은 건전할 수 있지만, 플레임워는 그렇지 않습니다. 저는 그것이 지긋지긋합니다. 사람들이 자기 작업 환경이 훨씬 더 낫고 빠르다고 말하는 것도 지겹습니다. 그건 좋은데, 중요하지 않습니다. 여러분의 장비는 단지 조연 역할만을 할 뿐입니다. 프로그래밍을 하는 데 컴퓨터조차 필요하지 않습니다. 도널드 커누스는 메모지에 알고리즘을 적었습니다. 앨런 튜링은 종이 한 장에 최초의 체스 컴퓨터를 설계했습니다. 그리고 그것은 작동했습니다. 이걸 이겨 보세요!
일반 사용자에게는 차선의 시스템도 아마 충분히 좋을 것입니다. 몇 달러만 내면 웹 서핑, 채팅, 사진 보관, 문서 작성, 음악 감상, 영화 감상에 완전히 충분한 훌륭한 하드웨어를 얻을 수 있습니다. 펜티엄 4, 256MB RAM, 그리고 아마도 무료로 얻을 수 있는 최신 운영체제로도 그런 일을 할 수 있습니다. 심지어 옛날 코모도어로도 그런 일들 대부분을 할 수 있습니다. 컴퓨터는 그런 일을 하기에 충분히 성숙하고 안정적이 된 지 오래입니다. 팜빌 때문에 시스템을 업그레이드할 필요는 없습니다. 마치 오래된 차가 완벽하게 작동하는데 새 차를 살 이유가 없는 것과 같습니다. 소프트웨어에 관해서도, 우리 중 많은 사람이 업그레이드하고 싶은 충동 없이 여전히 Office 2000, Photoshop 8 또는 VisiCalc를 사용합니다.
전문가들도 비슷한 상황에 처해 있습니다. 글쎄요, 우리는 돈을 조금 더 들일지도 모릅니다. 하지만 그래도 우리의 하드웨어는 우리 급여에 비해(그러길 바라지만) 믿을 수 없을 정도로 쌉니다. 완벽한 것은 없지만, 대부분의 경우 충분히 좋습니다. 십 년 전에 사용하던 컴파일러? 아직도 제 역할을 합니다. 우리는 여전히 컴퓨팅 석기 시대 프로그래밍 언어의 약간 변형된 후손들을 사용하고 있습니다. NASA에서 수치 계산을 하고 있다고 해도, 기본 작업 환경은 텍스트 편집기나 IDE를 실행하는 블랙박스입니다.
여러분이 일을 처리하기 위해 무엇을 사용하는지 상관하지 않습니다. 여러분의 필요에 맞는 환경을 찾아 만족하세요. 어쩌면 Lemote Yeelong 넷북에서 Emacs를 사용하고 있을지도 모릅니다 (안녕하세요, 리처드 스톨먼). 아니면 워크스테이션에서 Vim을 사용할 수도 있습니다. 그것은 똑같습니다: 쇳덩어리 위에서 실행되는 텍스트 편집기. Nano, ed 또는 TextMate를 사용한다고 해서 더 나쁜 프로그래머인 것은 아닙니다. 메모장도 아주 잘 작동합니다. 메모장은 파일을 불러오고, 저장하고, 그 사이에 편집할 수 있게 해 줍니다. 그것은 빌 게이츠와 폴 앨런이 Altair용 BASIC 인터프리터를 작성했을 때 가졌던 것보다 엄청나게 많은 기능입니다. 마음에 드는 무언가를 찾았다면, 그냥 그것을 고수하세요. 하지만 논쟁을 시작하지 마세요. 시간 낭비입니다.
트롤에게 먹이를 주지 마세요. 소프트웨어에 관해서는, FreeBSD vs. Linux vs. Windows vs. 네 엄마라는 오래된 진부한 논쟁에 빠지지 마세요. 대신 여러분의 코드에 대해 이야기하세요. 여러분의 문제 해결 능력을 봅시다. 여기서는 실용적으로 합시다.
말은 싸구려입니다. 코드를 보여 주세요. - 리누스 토르발스
여러분이 어떤 프로그래밍 언어를 사용하는지 상관하지 않습니다. 자바? 좋습니다. 비주얼 베이직? 훌륭합니다! 스칼라, 코볼, PHP, C++? 다 좋습니다. 어셈블러나 lolcode로 작성하세요. 어떤 언어 X에 기능 Y가 없다고 불평하지 마세요. 라이브러리를 작성하거나 다른 것을 사용하세요. 자바스크립트가 장난감 언어라고 말하는 것을 그만두세요. 단지 여러분의 필요에 맞지 않을 뿐입니다. 대신 여러분의 Lisp 어드벤처 게임을 보여 주세요. Brainfuck 인터프리터를 작성하세요. 뭔가를 하세요. 무언가를 움직여 보세요.
PHP에 관해서, nir는 Hacker News에 이렇게 썼습니다:
아무 바보나 PHP에 대한 비꼬는 댓글을 쓸 수 있습니다. 하지만 PHP가 가졌던 영향력에 근접한 코드를 작성할 수 있는 사람은 극소수입니다.
제가 PHP 문법을 좋아한다고 고백하면 여러분은 의자에서 넘어질까요? 그래요, 그건 거친 면이 있습니다. ($ 기호가 정말 필요한가요?) 하지만 더 중요한 것은 이것으로 얼마나 많은 일을 해낼 수 있느냐입니다. PHP는 제가 오랫동안 즉석에서 작성하는 일회용 스크립트에 사용하던 언어였습니다. 그것은 조금 지저분해 보이지만, 어떤 서버에서도 실행되며 엄청난 양의 내장 기능을 갖추고 있습니다. 빠른 프로토타이핑과 이것저것 이어 붙이는 데 훌륭합니다. 사실, 여러분이 소프트웨어를 작성할 때 추구해야 할 것은 꽤 좋은 소프트웨어를 만드는 것이고, 실제로 달성해야 할 것은 사용자를 행복하게 하는 충분히 좋은 소프트웨어입니다.
Zed A. Shaw는 Learn Python the hard way의 후기에서 이 점을 아주 잘 말합니다.
저는 아주 오랫동안 프로그래밍을 해 왔습니다. 너무 오래해서 이제는 저에게 엄청나게 지루합니다. 이 책을 쓸 당시 저는 약 20개의 프로그래밍 언어를 알고 있었고, 그 언어가 얼마나 이상한지에 따라 하루에서 일주일 정도면 새로운 언어를 배울 수 있었습니다. 하지만 결국 이것은 지루해졌고 더 이상 제 흥미를 끌지 못했습니다. 이 학습의 여정을 마친 후 제가 발견한 것은 언어는 중요하지 않다는 것이었습니다. 중요한 것은 여러분이 언어로 무엇을 하느냐였습니다. 사실, 저는 항상 그것을 알고 있었지만, 주기적으로 언어에 기분이 산만해져 그것을 잊어버리곤 했습니다. 여러분이 배우고 사용하는 프로그래밍 언어는 중요하지 않습니다. 프로그래밍 언어를 둘러싼 종교에 빠져들지 마십시오. 그것은 단지 여러분이 흥미로운 일을 하는 도구로서의 언어의 진정한 목적을 보지 못하게 할 뿐입니다.
여러분이 사용하는 어떤 도구에 대해서도 감정적으로 굴지 마세요. 아이폰은 - 실망을 드려서 미안하지만 - 그냥 전화기입니다. 마법 같은 건 없습니다. 'Think Different'도 없습니다. '하지만 그건 사악해!'라고 온라인은 말합니다. '오픈소스가 아니잖아.' 글쎄요, 안드로이드는 그저 구글이 모바일 플랫폼을 빠르게 개발할 필요가 있었기 때문에 존재합니다. 그것은 단순히 그들의 사업의 일부입니다. 그 뒤에는 도덕 같은 것이 없습니다. 구글은 마이크로소프트나 애플처럼 또 하나의 회사에 불과합니다.
제 맥북은 저에게 든든한 도구이지만, 더 나은 무언가가 나타나면 기꺼이 버릴 것입니다. 저는 5년 동안 사용한 파이어폭스를 버렸습니다. 크롬이 더 빠르기 때문입니다. 그리고 가치 있는 후계자를 찾으면 크롬도 버릴 것입니다. Vim은 제 생각에 꽤 좋습니다. 하지만 일을 처리하는 더 빠른 방법이 있다면 그것을 버리는 것을 두려워하지 않습니다. 대신 손을 더럽혀서 문제를 고치거나 새로운 것을 만들어 보세요.
글을 무작위로 읽기