이번 주 "MIT Technology Review" 기사에서는 프로그래밍 언어가 사용자의 사고 방식을 형성한다고 밝혔습니다. 이는 또한 기술 산업의 스타트업 전략과 그들이 스스로 변화할 수 있는 이유를 반영할 수도 있습니다.
다음은 기사 전문이다.
루비는 트위터, 훌루(Hulu) 등 현대 인터넷 서비스의 개발 언어로 많은 주목을 받고 있다. 일본의 컴퓨터 과학자 Yukihiro Matsumoto는 이 언어를 디자인하기로 결정했을 때 Samuel R. Delany의 1966년 공상 과학 소설 "Babel-17"의 개념을 그렸습니다. 이 소설의 핵심은 사용자의 사고 수준을 크게 향상시킬 수 있는 "바벨-17"이라는 인공 언어입니다. "바벨-17은 어떤 기술이든 마스터할 수 있게 해주는 정확한 분석 언어다." 소설의 주인공은 이렇게 말했다. Matsumoto는 Ruby를 통해 비슷한 목표, 즉 프로그래머의 사고 방식을 혁신하고 최적화하려는 목표를 달성하기를 희망합니다.
이 목표는 매우 야심차게 들리지만 마츠모토 유키히로의 견해가 주류가 되었습니다. 소프트웨어 개발자는 종종 프로그래밍 언어가 자신의 생각 방식을 변화시켜 문제 해결 방식을 변화시키고 심지어 어떤 문제를 해결해야 하는지에 대한 이해도 변화시킬 수 있다고 믿습니다. 회사, 제품, 경쟁사의 규모를 추정하는 방법은 다음과 같습니다. "어떤 언어를 사용합니까?"
프로그래밍 언어를 살펴보면 외부인이 이러한 소프트웨어 회사가 왜 그런 방식인지 이해하는 데 도움이 됩니다. 강력하고, 엄청난 가치를 지니고 있으며, 그들의 제품과 서비스가 우리 삶에 얼마나 잘 들어맞는지. Ruby, PHP, C 등 어떤 언어를 사용할지 이들 회사가 내부적으로 내리는 결정은 우리 모두에게 영향을 미칠 것입니다. Facebook이 현재와 같은 모습과 작동 방식을 갖고 있는 이유와 미래에 어떤 일이 일어날 것인지 알고 싶다면 Mark Zuckerberg가 사용하는 프로그래밍 언어인 PHP를 이해해야 합니다.
프로그래머들 사이에서 아마도 가장 멸시받는 프로그래밍 언어는 PHP일 것입니다. 많은 결함으로 인해 유명한 기술 블로그인 Eevee는 PHP가 "나쁜 디자인의 일부"이며 PHP를 사용하려는 개발자는 아마추어라고 믿습니다. 프로그래밍 질문과 답변 웹사이트인 스택 오버플로(Stack Overflow)의 공동 창업자인 제프 앳우드(Jeff Atwood)는 "스마트 엔지니어링 인재들이 페이스북으로 잇달아 가고 있는데 이는 매우 이상한 일이다. 그들은 윈도우 XP 환경에서 PHP 코드를 개발한다. 그들은 해커이지만, 여기서 '해커'는 경멸적인 표현입니다." Atwood는 PHP를 '서투른 거수', '전염병', 신비주의 애호가를 끌어들이는 '유령의 집'이라고 부릅니다.
성공적인 프로그래밍 언어에는 전체적인 철학, 즉 어휘와 구문을 구성하는 논리적으로 일관된 일련의 지침 원칙(예: 프로그래머에게 제공되는 지침)이 있습니다. 하지만 PHP에서는 그렇지 않습니다. 언어 설계자인 Rasmus Lerdorf는 자신이 많은 것을 혼합했을 뿐이라고 인정한 적이 있습니다. 그는 2003년 인터뷰에서 "어떻게 하면 프로그래밍 언어를 작성해야 할지 모르겠습니다. 그 과정에서 계속 새로운 논리적 단계를 추가할 뿐입니다."라고 말했습니다. 프로그래머들 사이에서 가장 좋아하는 예제 중 하나는 PHP 함수 "mysql_escape_string"입니다. 이 기능은 정보를 데이터베이스로 보내기 전에 정보에서 악의적인 입력 요청을 제거합니다. (악의적인 입력의 예로는 웹사이트에서 사용자의 이메일 주소를 요청하는 양식, 해커가 웹사이트 사용자의 비밀번호를 훔치기 위해 코드 조각을 삽입하는 것 등이 있습니다.) 이 함수의 취약점이 발견된 후 "mysql_real_escape_string"이라는 새 버전이 생성되었습니다. " 하지만 이전 버전은 교체되지 않았습니다. 따라서 현재 상황은 비행기 조종석에 유사한 기능을 가진 두 개의 버튼이 나란히 있는 것과 같습니다. 하나의 버튼은 랜딩 기어를 내리는 데 사용되고 다른 버튼은 랜딩 기어를 안전하게 내리는 데 사용됩니다. 이는 상식에 어긋날 뿐만 아니라 재앙을 초래할 수도 있습니다.
많은 사람들이 PHP를 싫어하지만, PHP는 여전히 많은 웹사이트의 기반입니다. 한 연구에 따르면 현재 인터넷상의 모든 도메인 중 무려 39%가 PHP 기술을 기반으로 하고 있는 것으로 나타났습니다. Facebook, Wikipedia 및 최고의 출판 플랫폼인 WordPress는 모두 PHP를 사용하여 개발되었습니다. 많은 결함에도 불구하고 PHP는 초보자에게 거의 완벽하기 때문입니다. PHP라는 이름은 원래 "Personal Home Page"의 영어 약어였습니다. 이 언어를 통해 프로그래머는 날짜 및 사용자 이름과 같은 동적 콘텐츠를 정적 HTML 페이지에 쉽게 추가할 수 있습니다. PHP의 등장으로 웹사이트 개발에서 웹 애플리케이션 개발로의 도약이 촉진되었으며 개발자는 전문가가 될 필요도 없습니다.
Wikimedia Foundation에서 Wikipedia 프로젝트를 담당하는 수석 소프트웨어 엔지니어인 Ori Livneh는 PHP의 사용 용이성이 Wikipedia 성공의 열쇠라고 말했습니다. 그러나 그는 "저는 항상 PHP를 싫어했습니다."라고 지적했습니다. PHP에 대한 의존도 때문에 Wikipedia는 사용자 기반이 확대되면서 디자인 결함이 발생했습니다. (위키피디아가 2008년까지 모바일 장치를 지원하지 않은 이유가 바로 이 때문입니다. 2013년이 되어서야 웹사이트에서 사용자 친화적인 편집 인터페이스를 제공했습니다.) 그러나 PHP를 기반으로 소프트웨어 프로그래밍에 익숙하지 않은 일부 사람들은 새로운 기능도 개발합니다. 예를 들어, Wikipedia는 PHP 언어를 사용하여 "Egyptology" 항목에 상형문자를 표시하고 페이지에서 음악 재생을 구현할 수 있습니다.
현재 구글은 한 가지 일, 즉 검색을 빠르고 정확하게 완수해야 하기 때문에 PHP 언어를 사용할 수 없습니다. 따라서 Google 검색 엔진은 Java 및 C++와 같은 보다 강력한 언어를 사용합니다. Google에 비해 Facebook은 소규모 실험이 뒤죽박죽이고 버튼, 피드, 장치가 뒤섞여 있는 곳입니다. 이 경우 PHP는 기능을 더 빠르게 구현할 수 있습니다.
저커버그가 하버드대학교 기숙사에서 결정적인 순간에 어떻게 페이스북의 개발방식을 선택했는지 상상해보실 수도 있습니다. 그는 최소한의 비용으로 웹사이트를 온라인에 구축해야 했습니다. 인터넷은 빠르게 발전하고 있으며 사용자 선호도는 끊임없이 변화하고 있습니다. 기회를 포착하는 유일한 방법은 시장에서 선두주자가 되는 것입니다. 호지포지든 고급 파스타든 상관없습니다. 그는 먼저 웹사이트를 완성하고 사용자가 사용할 수 있도록 만들어야 합니다. 그가 생각한 것은 코드가 아름다운지 여부가 아니라 친구들이 TheFacebook이라는 웹사이트에 로그인하여 친숙한 소녀들을 평가하도록 유도하는 방법이었습니다.
비밀병기: 더욱 강력한 언어
PHP와 완전히 반대되는 또 다른 개념을 찾고, 또 다른 극단이 어떤 것인지 알고 싶다면, 금융 거래 회사인 Jane Street Capital이 있습니다. 위치 뉴욕주 로어 맨해튼에 위치한 본사는 방문할 가치가 있습니다. 직원이 400명인 이 회사는 현재 미국 일일 증권 거래량의 약 2%를 처리하고 있습니다.
제가 Jane Street Capital의 기술 이사인 Yaron Minsky를 만났을 때 그는 제2차 세계 대전 당시 가장 많이 살아남은 장비 중 하나인 Enigma 암호 기계를 옆에 두고 책상에 앉아 있었습니다. 나는 이것이 그의 방에 있는 가장 멋진 비밀 무기라고 생각했지만, 곧 내가 실수했다는 것을 깨달았습니다. 민스키는 OCaml이라는 프로그래밍 언어에 대해 이야기했습니다. 컴퓨터 공학 박사인 Minsky는 10년 전 그의 상사에게 OCaml을 사용하여 회사의 전체 거래 시스템을 다시 작성하도록 설득했습니다.
이전에는 실제 응용 프로그램에서 OCaml을 사용한 사람이 거의 없었습니다. 이 언어의 설계자는 프랑스의 연구 기관이며 원래 목적은 수학 정리를 자동으로 증명할 수 있는 컴퓨터 시스템을 최적화하는 것이었습니다. 민스키는 대학원 과정에서 이 언어를 접했습니다. 그는 이 언어가 Jane Street Capital의 거래 시스템에 사용되는 Excel 스프레드시트를 대체할 수 있다고 믿습니다.
OCaml의 가장 큰 특징은 "입력 확인 시스템"입니다. 이는 시스템이 잘못되었다고 판단하는 코드 아래에 녹색 구불구불한 표시를 사용한 다음 해당 코드의 실행을 금지할 수 있는 Microsoft Word의 구문 검사 기능과 유사합니다. 이 시스템을 사용하여 개발된 프로그램은 신뢰성이 매우 높으며 이는 개발 중인 소프트웨어가 매일 300억 달러 규모의 거래를 처리할 때 중요합니다.
Minsky는 OCaml의 입력 확인 시스템이 취약점을 포착함으로써 Jane Street Capital의 프로그래머가 더 높은 수준의 문제에 집중할 수 있게 해준다고 말했습니다. 그리고 회사가 OCaml의 검사 기능을 더욱 내부화할 수 있다면 프로그래머가 잘못된 생각을 할 수 없게 만드는 습관이 생길 것입니다.
게다가 입력 확인 도구가 작동하려면 프로그래머는 코드에 복잡한 주석을 추가해야 합니다. 이는 Word의 문법 검사기에서 모든 문장에 주석을 달도록 요구하는 것과 같습니다. 제한된 입력으로 코드를 작성하는 것은 번거롭고 심지어 좌절스러울 수도 있습니다. 더 나쁜 점은 다른 프로그래밍 언어에 비해 OCaml은 매우 추상적인 수학을 포함하므로 대부분의 프로그래머에게 어려움을 준다는 것입니다.
그럼에도 불구하고 언어의 정확성은 일부 사람들에게 매력적이며 Jane Street Capital에 특이한 채용 이점을 제공합니다. 일부 소프트웨어 개발자는 PHP의 단점을 무시하고 Facebook과 Wikipedia에 합류하지만 Minsky는 OCaml 언어와 그의 책 "OCaml in the Real World"가 훌륭한 프로그래밍 인재를 유치하는 데 도움이 된다고 말했습니다. 매력은 언어에만 있는 것이 아니라 그것을 말하는 사람들에게도 있습니다. Jane Street Capital에서는 직원들이 휴식 시간에 체스를 두었습니다. 이러한 지적 경쟁 문화는 OCaml 언어 사용과 밀접한 관련이 있는 것으로 보입니다.
구글도 자체 설계한 고성능 언어 Go로 같은 목표를 달성하려는 것으로 보인다. 네트워크 서비스를 더욱 우아하고 효율적으로 만들기 위해서는 대규모 네트워크 서비스 뒤에 있는 서버를 위한 보다 발전된 소프트웨어를 개발하는 것이 유리할 것입니다. 또한, 새로운 것을 좋아하고 어려움에 도전하는 프로그래머들에게도 매력이 있습니다.
적절한 시기: 성장하고 성장한 후
2010년 말, 페이스북은 위기에 직면했습니다. PHP는 코드 성능을 중시하는 언어는 아니지만 당시 페이스북에는 PHP가 필요했습니다. Facebook은 매우 빠르게 성장하고 있으므로 중요한 변화를 일으키지 않으면 회사는 실패할 것입니다.
프로그래밍 언어를 완전히 바꾸는 것은 선택 사항이 아닙니다. Facebook은 PHP를 사용하여 수백만 줄의 코드를 작성했으며 수천 명의 엔지니어링 전문가가 이 개발에 참여했으며 그 결과 제품은 수억 명의 사용자를 축적했습니다. 따라서 몇몇 고위 Facebook 엔지니어들이 소규모 팀을 구성했습니다. 그들은 페이스북이 그들의 "모국어"를 포기하지 않고도 서비스를 제공할 수 있는 방법을 고안하려고 노력하고 있었습니다.
해결책의 일부는 Facebook의 PHP 코드를 더 빠른 C++ 코드로 변환하는 컴파일러를 개발하는 것이었습니다. 다른 부분은 컴퓨터 언어 공학의 위업입니다. Facebook 프로그래머에게 계속해서 PHP 스타일 문화를 제공하는 동시에 그들이 보다 안정적인 코드를 작성할 수 있도록 허용하는 것입니다.
이 "구조팀"은 PHP 언어의 변형인 Hack을 설계했습니다. Hack은 선택적 입력 확인 시스템을 갖춘 PHP 언어입니다. 평소처럼 혼란스러운 코드를 사용하여 PHP 프로그램을 빠르게 작성할 수도 있고, 시스템 요구 사항을 따르고 시스템이 주석을 추가하여 코드의 정확성을 확인하도록 할 수도 있습니다. 이 입력 확인 도구가 전적으로 OCaml을 사용하여 개발된 것은 우연이 아닙니다. Facebook은 프로그래머가 익숙한 언어를 사용하여 신속하게 코드를 작성하기를 원하지만, 문제가 발생하는 것을 원하지 않습니다. (작년에 Zuckerberg는 Facebook의 새로운 엔지니어링 슬로건인 "Move fast while 하면서 인프라 안정성을 보장합니다."를 공개했습니다.)
동시에 Twitter도 비슷한 변화를 겪고 있습니다. 트위터의 개발은 원래 Ruby on Rails를 기반으로 했습니다. 이는 Ruby 언어로 개발된 인기 있는 네트워크 프로그래밍 프레임워크이며 PHP에서 많은 아이디어를 차용했습니다. 그러나 이후 트위터에서는 사용자 수가 급증했습니다. 사용자의 팔로어가 수십만 명이라면 메시지를 게시할 때 그에 따라 수십만 명의 사용자 타임라인을 새로 고쳐야 합니다. 과거에는 인기 있는 Twitter 메시지가 시스템을 압도하여 Twitter 엔지니어가 서비스를 중단하고 문제를 해결해야 하는 경우가 많았습니다. 트위터는 또한 뒤따르는 빈번한 중단으로 인해 "악명"이 높습니다.
이후 Twitter는 서비스 코드의 상당 부분을 Scala로 다시 작성하여 이 문제를 해결했습니다. 당연히 OCaml과 유사하게 Scala는 코드 정확성과 성능을 강조하여 프로그래머의 개인적인 프로그래밍 자유와 오락을 희생하는 강력한 입력 확인 시스템을 갖춘 교육 기관에서 설계한 언어이기도 합니다.
수익 모델을 찾은 후에 스타트업은 성숙해집니다. 마찬가지로 프로그래밍 언어의 힘을 활용하여 기업 문화를 조작할 수도 있습니다. 프로그래밍 언어 디자이너인 Guido van Rossum은 Google에서 7년간 근무한 후 Dropbox에 합류했습니다. 그는 소프트웨어 회사가 일정 규모에 도달하면 혼란을 피하는 유일한 방법은 프로그래머에게 더 많은 것을 요구하는 프로그래밍 언어를 사용하는 것이라고 말했습니다. "같은 말을 세 번이나 해야 하기 때문에 속도가 느려질 수도 있다"고 그는 말했다.
따라서 많은 스타트업은 변경을 하기 전에 최대한 기다리기를 원합니다. 처음 시작한 재능 있는 사람들 중 일부를 잃을 수도 있고, 소규모 팀이 새로운 기능을 빠르게 개발하는 것은 도움이 되지 않습니다. 그러나 이러한 언어는 회사 전체의 프로그래머가 서로의 코드를 이해하는 데 도움이 되어 보다 안정적인 제품을 만들 수 있습니다. 귀하의 제품이 사람들의 일상생활의 일부가 되기를 원한다면 이러한 안정성은 필수적입니다.
상황에 따라 다양한 전략을 구사할 수 있는 능력은 소프트웨어 스타트업의 발전을 어느 정도 촉진한다. 소프트웨어의 발전은 컴퓨터의 인기에 달려 있으며, 이들 회사는 자신을 재창조하는 독특한 방법을 가지고 있습니다. 그들이 변화하고 발전함에 따라 그들이 할 수 있는 일은 단순히 조직 구조를 조정하는 것이 아니라 더 깊은 변화, 즉 자신의 문화와 사고 방식을 바꾸는 것입니다.