>  기사  >  PHP Bird Brother: 저는 원래 프로그래밍에 "적합하지 않은" 사람이었습니다.

PHP Bird Brother: 저는 원래 프로그래밍에 "적합하지 않은" 사람이었습니다.

藏色散人
藏色散人앞으로
2019-02-12 13:20:278530검색

Hui Xinchen@Laruence는 중국에서 가장 영향력 있는 PHP 기술 전문가이자 PHP 개발팀의 핵심 멤버이자 PECL 개발자이며 Zend Company의 외부 컨설턴트입니다. 그는 Yahoo, Baidu, 그리고 현재 Sina Weibo에서 플랫폼 및 데이터 부서의 수석 설계자이자 수석 PHP 컨설턴트로 근무했습니다. Hui Xinchen은 PHP NG의 핵심 개발자이자 PHP5.4 및 5.5의 주요 개발자입니다. PECL 개발자로서 그는 Yaf, Yar, Yac 및 Taint와 같은 뛰어난 오픈 소스 작업에 기여했으며 APC, Opcache, Msgpack 및 기타 프로젝트의 관리자이기도 합니다.

인터넷에서 PHP 튜토리얼을 검색하는 초보자부터 PHP 개발팀의 핵심 구성원까지 Hui Xinchen은 전체 프로세스가 "괴물과 싸우고 업그레이드하는 것"과 같다고 느낍니다. 자바와 마찬가지로 블루칼라 언어라고도 불리는 PHP는 더 많은 프로그래머를 양성할 수 있는 요람이라고 생각한다. 그는 자신의 블로그 Fengxuezhiyu에서 PHP 언어 및 Zend 엔진과 관련된 연구, 기술 및 뉴스를 공유합니다. 왼손에는 코드, 오른손에는 시.

PHP Bird Brother: 저는 원래 프로그래밍에

Q: 어떻게 프로그래밍에 관심을 가지게 되었나요?

제가 처음으로 "프로그래밍"을 한 것은 Xiaobawang 학습 기계에서였던 것 같습니다. 이후 대학에서 컴퓨터 공학을 공부했고, 대학원생 때 학교의 캠퍼스 구축을 담당했으며, 학교의 여러 중등 학과의 웹사이트를 포함하여 많은 웹 개발 작업을 했습니다. 그 당시 캠퍼스 BBS 유지 관리 등 생각해보면 제가 프로그래밍을 사랑하게 된 계기나 계기는 없었던 것 같습니다. 이 업계에서 일한다는 게 너무 자연스럽고, 싫다는 느낌이 들지 않아서 계속 이 일을 하게 됐어요.

Q: 어떻게 PHP와 사랑에 빠지셨나요? 어떻게 PHP 개발팀의 핵심 멤버가 되었나요?

대학원생 때 웹사이트를 만들고 싶었는데 어떻게 해야할지 전혀 모르겠어서 인터넷으로 검색하다가 우연히 간단한 웹사이트 만드는 방법에 대한 PHP 튜토리얼을 발견하게 되었습니다. 따라해 보니 설치, 배포(당시에는 중앙 집중식 배포 도구가 없었지만 LAMP 배포 방법에 대한 튜토리얼이 많았음), 코드 작성, 테스트 등 구문이 매우 편리했습니다. C언어와 매우 유사하고, 많은 API의 이름도 libc와 유사했습니다. 그래서 PHP와의 불가분의 유대가 시작되었습니다.

2011년이었을 겁니다. 당시 Ap(Yaf의 전신 프로젝트)가 Baidu용으로 개발됐기 때문에 당시 Baidu 내에서 잘 사용하고 있었기 때문에 PECL에 기여하려고 생각했습니다. 이름이 Yaf로 변경되었습니다. (PHP에는 많은 프레임워크가 있기 때문에 이름도 약간 자기비하적입니다.) 그래서 저는 영어가 서툴기 때문에 그 과정이 상당히 힘들었습니다. , Pierre Joye는 그 당시 저를 많이 도와줬고 Yaf가 PECL에 합류하게 되었어요.

그리고 Yaf를 제출하기 전에는 실제로 PHP의 소스 코드를 공부하고 있었기 때문에 버그와 수정 사항도 많이 제출했습니다. 예를 들어 어느 날 정오에 Rasmus(PHP의 아버지)가 말했습니다. IRC에서 그가 버그를 발견했다는 소식을 듣고 거의 5분 후에 수정했습니다.

점차 몇몇 사람들과 친해지고 모두의 신뢰를 얻은 후, 지원서를 작성하고 PHP 핵심 코드 제출 허가를 얻었습니다. 저는 PHP의 직접 개발 및 버그 수정에 참여하여 회원이 되었습니다. 개발팀의 구성원입니다.

핵심은 천천히 쌓이고, 실제로는 상호 신뢰를 쌓아가는 과정입니다. 모든 사람이 당신의 작업을 인정한다면 그들은 당신의 의견을 존중할 것입니다. 저는 점차 Dmitry Stogov에 익숙해졌고 Zend의 핵심 부분에 대한 제출 허가를 얻었으며 많은 핵심 버그 수정과 새로운 기능을 제출했습니다. 나중에 저는 Zend 외부 컨설턴트가 되었고 천천히 핵심 개발자가 되었습니다.

몬스터와 싸우고 업그레이드하는 것처럼 들리네요.

Q: 어떤 상황에서 Yaf를 개발하게 되었나요? 당시 Baidu는 Yaf 개발을 어떻게 지원했습니까?

Yaf 이전에는 실제로 프레임워크 사용 여부에 대한 고전적인 논쟁이 있었습니다. "프레임워크를 사용하면 성능이 저하되고, 프레임워크를 사용하지 않으면 개발 효율성이 저하됩니다."

당시 Baidu에는 많은 프레임워크가 있었습니다. 오픈 소스 Yii, ZF 등을 포함하며 일부 팀이 직접 작성한 것도 포함됩니다. 한 가지 문제는 클래스 라이브러리에서 일부 주변 시설이 서로 통신할 수 없다는 것입니다.

또 다른 이유는 많은 프레임워크 작성자가 프레임워크를 출시한 후 다양한 사람들이 프레임워크를 다양하게 수정한다는 점입니다. 결과적으로 프레임워크는 출시된 후 다양한 변형이 됩니다. 불가능한.

그래서 저는 이러한 문제를 해결하기 위한 프레임워크를 구현하기 위해 PHP 확장을 사용하기로 결정했습니다. 물론 이 확장을 작성하기 전에는 그다지 자신감이 없었고 확장이 얼마나 많은 성능 향상을 가져올 수 있는지도 몰랐습니다. 다행히 최종 결과는 매우 좋습니다.

Q: Yaf를 작성하기 위해 C 언어를 선택한 이유는 무엇입니까?

PHP는 C 언어로 작성되었기 때문에 그 확장도 C 언어로 작성되었기 때문에 Yaf를 작성하기 위해 C 언어를 선택했습니다.

Q: 왜 바이두를 떠나 시나 웨이보로 오셨나요?

사실 여러 가지 이유가 있습니다. 예를 들어 저는 당시 Baidu에서 T7이었고 비즈니스 문제에 덜 관여했다고 느꼈습니다. 조금 낭비되는 느낌이 들었습니다.

그리고 당시 저는 바이두의 상업 검색 부서에 있었고 트래픽이 많은 시스템에 직접 노출되지 않았기 때문에 다시 연습할 수 있는 큰 플랫폼을 찾고 싶었고 웨이보는 우연히 그런 일을 했습니다. 플랫폼.

웨이보에 온 후 저는 이전에 경험하지 못한 많은 도전에 직면했고, 제 지식을 활용할 수 있는 무대가 더 커졌다고 느꼈습니다.

Q: 현재 Sina Weibo에서 구체적으로 어떤 책임을 맡고 계시나요?

저는 현재 Weibo 기술부에서 기본 서비스 팀을 이끌고 있습니다. 저희의 주요 업무도 단계별로 나누어져 있습니다. 처음 2년 동안의 주요 업무는 다양한 기본 프레임워크와 도구 개발, 환경 최적화, 사양 수립 등

지난 2년 동안 Weibo의 LAMP 아키텍처는 안정화되었으며 전반적인 성능이 여러 번 향상되었습니다. 우리는 또한 자체 고성능 LAMP 종합 솔루션을 보유하고 있습니다. 따라서 LAMP를 최적화하는 작업이 줄어듭니다. 이제 주요 초점은 캐싱 중간 계층, 트랜스코딩 서비스, 통신 플랫폼 등과 같은 인프라의 연구 및 개발에 있습니다.

Q: PHP7(PHPNG)은 Sina Weibo 플랫폼에서 PHP를 사용할 때의 필요성과 문제점을 중요한 피드백으로 고려했나요?

물론 이것은 존재합니다. 개발팀에 합류한 이후로 다른 많은 멤버들과 비슷한 주장을 해왔습니다. 저는 성능이 매우 중요하다고 생각하고, 어떤 사람들은 새로운 기능이 중요하다고 생각하기 때문에 새로운 기능이 나오면 우리는 그렇게 할 것입니다. 성능에 영향을 미칠 때 분쟁이 있습니다.

저는 성능 향상에 매우 집착합니다. 그래서 나중에 Dmitry Stogov와 더 많이 협력하게 되었습니다. 왜냐하면 그 역시 성능에 특히 관심이 있기 때문입니다.

제가 성능에 관심을 갖는 가장 큰 이유는 중국 최대 LNMP 플랫폼인 Weibo에 1%의 성능 향상이 가져올 수 있는 가치를 매우 현실적으로 이해하고 있기 때문입니다. 우리 웨이보의 전반적인 성능은 2년 전과 비교하여 크게 향상되었지만, 개발 효율성에 영향을 미치지 않으면서 추가적인 개선은 언어 및 환경 성능 개선에만 의존할 수 있다는 것을 깨달았습니다. 그래서 이 부분이 웨이보의 PHP 요구 사항입니다.

PHP7은 WordPress 5.6과 비교하여 100% 이상의 실제 성능 향상(QPS)을 제공합니다. 내년에는 PHP7이 출시된 후 Weibo의 전체 LAMP 플랫폼의 다양한 비즈니스도 100% 성능 향상을 얻을 수 있다고 믿습니다. .

Q: PHP7(PHPNG) 개발에 참여하게 된 과정은 어떻게 되나요? 다른 개발팀 구성원들과 어떻게 협업하시나요?

PHPNG는 당시 비밀 프로젝트였습니다. 원래 참가자는 Dmitry와 저뿐이었습니다. 올해 봄에 진행했던 JIT 프로젝트는 효과가 만족스럽지 않아 중단되었습니다. . 다들 우울했어요.

Dmitry는 ZVAL을 재설계하고 크기를 압축하여 메모리 사용량을 줄이는 아이디어가 있다고 말했습니다. 그런 다음 우리 둘은 그것에 대해 논의했습니다. 왜냐하면 우리는 실제로 매일 다양한 아이디어를 가지고 있기 때문에 그 당시 우리는 단지 '글쎄, 이 아이디어가 효과가 있을 수도 있다'라고 생각했습니다. 하지만 아직은 그다지 자신감이 없습니다.

당시 주요 아이디어는 효과를 테스트하기 위해 작동하는 프로토타입을 빠르게 만드는 것이었습니다. 이 과정에서는 주로 아이디어에 대해 논의한 후, 하고 싶은 부분을 구현하고, 병합하는 작업을 주로 합니다.

협력을 위한 주요 도구는 여전히 Skype이지만 그는 상트페테르부르크에 있고 우리와 시차가 있기 때문에 이메일 통신도 사용하고 Github를 통해 코드를 검토할 것입니다.

나중에 프로젝트가 거의 마무리되었을 때 우리는 "야, 이거 좋은 생각이고 효과가 있다"는 것을 깨달았습니다. 그런 다음 공개되었습니다. 그 이후에는 아이디어가 있으면 RPC를 제출하고 패치를 제출하고 투표를 하면 모두가 반응하고 병합하는 방식으로 진행됐다.

Q: 지금까지 PHP7에는 어떤 기능이 추가되거나 제거되었나요? 출시 전에 성능은 또 어떻게 개선되나요?

주로 성능 향상을 제공하는 PHPNG 브랜치 외에도 AST(추상 구문 트리) 지원, 균일 변수 구문, 64비트 길이 문자열 지원, 일부 새로운 구문 설탕 및 최근 기본 TLS 등이 있습니다. .

PHP7은 2015년 10월에 공식적으로 출시될 예정입니다. 그 전에는 iTLB 누락을 줄이기 위한 기능을 지정하여 재섹션 및 정렬과 같은 Hashtable을 직접 대체하기 위해 zend_array를 사용하는 것과 같은 몇 가지 시도할 아이디어가 있습니다. 일부 최적화 방법(유형 뒤집기)이 PHP에 도입되었으며 일부 유형별 OPCodeHandler가 속도를 높이는 데 사용됩니다. 또 다른 예는 코드 데이터의 지역성을 더욱 개선하고 캐시 누락 등을 줄이는 것입니다.

물론 병행해서 진행하고 있는 JIT 프로젝트도 있는데, PHP7이 출시되면 이 프로젝트가 준비가 될지 걱정스럽습니다.

Q: 새 버전의 PHP는 PHP6에서 PHP7로 직접 업그레이드됩니까? 왜?

가장 큰 이유는 PHP에는 PHP6라는 개발 버전이 있었는데 나중에 이 버전이 실패하여 출시되지 않았기 때문입니다. 따라서 이 버전은 PHP7이어야 합니다.

질문: Facebook에서 출시한 Hack 언어와 PHP는 어떤 관계가 있나요? Hack의 목적은 PHP를 대체하는 것입니까? 이 두 언어의 장점은 무엇입니까?

별로 중요하지 않습니다. Hack은 PHP가 아닙니다. 교체에 관해서는 그들(페이스북)이 그런 생각을 갖고 있을 수도 있다고 생각하지만, 커뮤니티가 이를 받아들이는지 여부에 달려 있습니다.

저는 Hack에 대해 특별히 잘 알지 못해 구체적으로 언급할 수 없습니다.

질문: PHP는 배우기 쉽고 문턱이 낮기 때문에 프로그래밍에 적합하지 않은 사람들이 쏟아졌다고 생각하는 사람들도 있습니다. 어떻게 생각하시나요? 이 견해는?

저는 이 견해에 정말 동의하지 않습니다. 저도 학부를 졸업하고 개발직을 찾아 여러 부서에 면접을 보았으나 거절당했습니다. 아마도 당시 면접을 보시는 분들의 눈에는 저는 그냥 프로그래밍에 적합하지 않은 사람으로 보였을 것입니다.

하지만 PHP는 임계값이 낮기 때문에 사람들은 자신의 "프로그래밍" 결과를 빠르게 확인할 수 있으며 이는 초보자에게 긍정적인 피드백과 인센티브 효과를 가져 관심을 더 많이 갖게 됩니다. 프로그램을 진행하는 사람이 많을수록 훌륭한 사람이 등장하고 기술 전체의 발전에 기여할 확률이 높아집니다.

더욱이, 미래의 프로그래밍 언어는 사용 편의성을 향해 발전해야 하며, 프로그래밍의 문턱을 더욱 낮춰야 합니다. 언젠가는 누구나 프로그래밍할 수 있게 될 것입니다!

Q: 자격을 갖춘 PHP 엔지니어의 지식 구조는 무엇입니까?

예전에 "PHP 엔지니어는 만병통치약이다"라는 말이 있던 기억이 납니다. 사실 이 문장은 PHP 엔지니어에게만 적용되는 것이 아니라, 모든 사람에게 적용되어야 합니다. 모든 엔지니어.

지식 구조가 넓어야 합니다. 웹 개발에는 HTML, CSS, JS 및 SQL 외에도 Nginx, Linux 및 Mysql을 구성, 유지 관리 및 문제 해결하기 위한 몇 가지 일반적인 방법도 알아야 합니다.

Q: 면접 시 기술력 외에 어떤 점에 중점을 두시나요?

명확한 사고와 소통, 대화에 각별히 주의하겠습니다. 사실 직설적으로 말하면, 앞으로 우리가 함께 일한다면 장애물은 없을지, 성장 가능성은 클지.

질문: phpe.net의 전 웹마스터인 Chen Bole은 현재 남성용 양말을 판매하고 있습니다. 미래에 대한 당신의 계획은 무엇입니까? 당신은 항상 코더가 될 것입니까?

사실 저는 굉장히 게으른 사람이고, 오늘은 술에 취하리라는 생각을 전혀 하지 않습니다. 그래서 저는 사실 미래에 대해 잘 모르겠습니다. 저는 지금도 여전히 프로그래밍을 좋아하고 제 작업을 통해 모든 사람에게 혜택을 주고 커뮤니티로부터 칭찬을 받는 것을 좋아하며 앞으로도 그렇게 할 것입니다. 그것.

성명:
이 기사는 oschina.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제