"php는 나쁜 언어"패러다임을 깨는 방법? [닫은]


19

PHP는 나쁜 언어가 아닙니다 (또는 적어도 일부는 제안한 것처럼 나쁘지 않습니다). PHP가 객체 지향이라는 것을 알지 못하는 교사도있었습니다. 나는 우리가 PHP 개발자라고 말할 때 즉시 우리를 불신하는 클라이언트를 가지고 있으며 Django 또는 RoR과 같은 세련된 언어와 프레임 워크, 또는 Java 및 ASP.NET과 같은 "기업 및 견고한"언어를 사용하지 않는 것에 대해 질문합니다.

Facebook은 PHP를 기반으로합니다. 기업 및 정부에서 사용되는 Joomla 및 Drupal과 같이 웹을 강화하는 견고한 프로젝트가 많이 있습니다. 모든 언어 (Symfony 2, Doctrine)에서 내가 본 최고의 아키텍처를 가진 프레임 워크와 라이브러리가 있습니다. PHP는 내가 본 최고의 문서와 많은 전문가 커뮤니티를 보유하고 있습니다.

PHP는 리플렉션, 인터페이스와 같은 고급 OO 기능을 가지고 있으며, PHP는 이제 특성을 통해 기본적으로 깨끗하고 수평 재사용을 지원합니다 .

PHP에는 나쁜 평판을주는 나쁜 프로그래머와 스크립트 키드가 있지만 동시에 PHP 커뮤니티에 힘을 실어주는 일이 너무 쉽습니다. PHP가 너무 쉽게 처리 할 수 ​​있기 때문에 종종 잘못된 방식으로 작업을 수행 할 수 있습니다. 언어?.

자, 이것을 실제 대답 할 수있는 질문으로 요약하자면, PHP 개발자라고 말할 때 눈살을 찌푸리고 편견을 멈추고 명예를 지키기위한 좋고 단단하고 짧고 달콤한 주장은 무엇입니까? .

(고객 또는 다른 사람을 현장에서 설득시킬 수있는 경험적 증거가있는 사람들에게 휘핑 크림을 곁들인 무료 쿠키)

추신 : 우리는 Symfony를 사용 하며 코드는 아름답고 유지 보수가 가능합니다.

PPS : Facebook PHP 작성되었으며 HipHop을 통해 C ++로 컴파일되어 Hadoop에 배포됩니다. 여기 : http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/


9
우선, 프로그래머에 대한 으스스한 anti-PHP 의견을 모두 표시하십시오. 중재자를 삭제하는 것을 좋아하는 중재자 중에는 적어도 한 명의 PHP 개발자가 있습니다.
yannis

23
좋은 PHP 코드 작성
Charles Sprayberry

42
참고로 PHP 사람들이 "FB is build on PHP"인수를 가져올 때 정말 싫어합니다 . 즉, 하둡과 같은 대규모 분산 시스템에 구축되어 있으며 실제로 완료되는 부분은 C입니다. PHP는 템플릿에 사용됩니다. UI는 "FB는 PHP를 기반으로합니다"라고 말하기에는 충분하지 않습니다 ...
TC1

10
@NB Yes (예) '는 여기에 몇 가지 좋은의 UI의 터치를 가지고 원인이 ...하지만,이 경우, 이럴, StackOverflow의는 CSS와 자바 스크립트에 내장되어 있다는 말처럼 그 "FB는 PHP에 내장되어 있습니다"라고
TC1

13
PHP 코드를 유지하고 싶지 않기 때문에 당신을 고용하지 않을 것입니다. PHP는 Perl 및 JavaScript 및 기타 급한 언어와 같은 기능을 얻고 있지만 핵심은 서둘러 설계되었으며이를 변경할 수 없습니다. 아마도 당신은 Django와 RoR과 Grails를 배우는 것을 고려해야하므로 언어에 구애받지 않아야합니다.
Job

답변:


40

내가 가진 유일한 대답은 이것입니다 : 모든 것이 짜증납니다.

기능적 또는 절차 적 프로그래밍에 비해 OOP에 대한 많은 논란을 찾을 수 있습니다 (빠른 검색으로 그것들을 밝힐 것입니다). PHP의 OO 지원이 그것을 방어한다고 표시하는 것 같습니다.

구글 블랭크는 짜증나고 결과는 무엇이든 찾을 수 있습니다. 파이썬은 짜증나 . 루비는 짜증나 . 레일은 짜증나 . PHP는 짜증나 . 자바는 짜증나 .

당신은 정말로 무엇을 빨아 알고 싶어? 프로그래머. 프로그래머들은 짜증나. 모든 훌륭한 개발자는 언어에 관계없이 심지어 언어에 익숙하지 않더라도 놀라운 응용 프로그램, 프런트 엔드 백 엔드 를 만들 수 있어야합니다 ! 즉, 훌륭한 프로그래머는 모든 언어를 효과적으로 배우고 사용할 수 있어야합니다.

또한 응용 프로그램의 성공은 코드와 아무 관련이 없습니다. Facebook 코드가 끔찍하다고 들었습니다. 그러나 하나님에 의해 효과적입니다. Wikimedia도 마찬가지입니다 (Wikipedia는 PHP를 기반으로하며 매우 인기있는 웹 사이트이기도합니다). 정말 중요한 것은 결과입니다!

PHP는 제가 가장 친숙한 언어입니다. 나는 그것을 죽음으로 변호 할 것이다. 나는 웹 개발을 위해 PHP 프레임 워크, PHP 코드, PHP, python ruby (그리고 심지어 Java)를 모두 사용했습니다. 나는 하나가 특히 다른 것보다 낫다고 말할 수 없습니다. 더 중요한 것은 개발자와 알고리즘입니다. 많은 언어에서 놀랍도록 훌륭하고 완전히 끔찍한 코드를 보았습니다 (특히 노출이 많기 때문에 PHP).


이제 당신의 질문에 대해 : 그것은 당신이 누구를 다루는 지에 달려 있습니다.

실업가

그들은 주로 결과와 비용 효율성에 관심이 있습니다. 매우 성공적인 Facebook, Wikipedia 및 Wordpress가 PHP를 사용한다는 사실은 성공적인 응용 프로그램을 작성하는 데 효과적인 언어임을 확신시키기에 충분해야합니다.

프로그래머

코드 자체를 말하게하십시오. 개발자가 PHP가 어떤면에서 열등하다고 말한다면, 효과가 있다고 생각되는 PHP 코드를 보여주십시오. 푸딩의 증거는 먹는 것입니다.


8
"좋은 개발자라면 언어에 관계없이 놀라운 응용 프로그램, 프런트 엔드 및 백 엔드를 만들 수 있어야합니다"-Malbolge에서 시도한 후에도 반복하십시오.
Michael Borgwardt

5
좋은 프로그래머는 자신이 모르는 언어로 좋은 코드를 작성할 수 있다고 생각하지 않습니다. 괜찮지 만 어쩌면 좋지는 않습니다. 모든 언어로 좋은 코드를 작성하려면 라이브러리와 언어 자체에 대한 지식이 필요하기 때문입니다.
svick

4
동의하지 않습니다. 좋은 개발자는 좋은 응용 프로그램을 작성하는 데 필요한 지식을 익힐 수 있어야합니다. 라이브러리와 구문에 대한 지식이 중요하지만 이는 훌륭한 개발자가 쉽게 찾을 수있는 것입니다. 언어가 Malbolge 인 경우에도 알고리즘과 개념 (그리고 아마도 인내심)이 훨씬 어렵다. 아니면 훌륭한 개발자를 생각하고 있습니다.
폭발 알약

7
success of an application has nothing to do with its code<-맞습니다. 그러나 사람들이 "PHP는 나쁜 언어"라고 말할 때 "PHP로 작성된 응용 프로그램이 나쁘다"라는 의미가 아니라 "PHP로 작성된 응용 프로그램이 코드 스파게티로 인해 작업하기가 종종 쉽지 않다"는 것을 의미합니다. PHP로 작성된 훌륭한 응용 프로그램이 있습니다. 그러나이 답변은 프로그래머가 PHP를 "나쁜"이라고 부를 때의 의미를 다루지 않는다고 생각합니다.
Billy ONeal

2
@BillyONeal 언어가 "좋은"것인지 "나쁜"것인지에 대한 당신의 통계는 무엇입니까? 응용 프로그램은 모든 것입니다. 아무도 코드에 신경 쓰지 않습니다 . Linus Torvalds는 C ++이 얼마나 끔찍한 지에 대해 열광했습니다. 일부 프로그래머가 나쁜 코드를 작성하기 때문에 문제가 있다고 말할 수 있습니다.
폭발 알약

20

PHP는 이상한 역사를 가지고 있습니다. 얼마 전까지 만해도 훨씬 나아졌지 만, 많은 나쁜 관행과 패턴이 권장되고 피하기 어려운 시간, 아주 오랜 시간이있었습니다. 거기에는 여전히 끔찍한 PHP 코드의 전체 세대가 있으며, 새로운 프로그래머가 오래된 코드를 읽고 배우면 나쁜 행동을 배우고 있습니다. PHP는 이제 블랙 엔드 명성을 얻지 못할 수도 있지만 그럼에도 불구하고 확실히 얻었습니다.

PHP를 방어하기위한 최선의 방법은 현재의 최신 상태를 모든 사람들이 알고있는 역사와 신중하게 거리를두고 구별하는 것입니다. PHP는 끔찍한 언어는 아니지만 몇 년 동안 업계에 종사해온 사람과 이야기를 나누면 기억이 다르게 말해줍니다.

PHP 팀이 실수를 통해 배운 방법을 보여주고 언어를 더 잘 바 꾸었습니다. 마법의 인용구와 등록 세계의 시대는 지났습니다. 글로벌 패러다임, 안전 모드 및 mysql_escape_string은 사라졌습니다. 실제 PHP 프로그래머는 항상 네임 스페이스와 매개 변수화 된 쿼리를 사용하고 더 이상 사용되지 않는 함수를 피하고 라이브러리 코드를 항상 문서 루트 외부에 두어야한다고 설명합니다.

PHP가 변경되었고 PHP 프로그래머가 변경되었습니다. 이것이 바로 PHP가 오늘날의 훌륭한 플랫폼 인 이유입니다. 또한 고객이 사전 설치 한 것으로 알고있는 유일한 플랫폼입니다. 대단합니다.

부수적으로, 기존 CMS 엔진과 프레임 워크를 PHP의 큰 승리로 인용하지 않는 것이 좋습니다. 당신은 같은 것들을 지적 이들의 위험을 실행 사일에서 웹 센스 보안 연구를 최근 웹 사이트를 감염의 94 %가 줌라와 워드 프레스와 같은 소프트웨어를 실행하는 PHP 웹 사이트에 반대하는 것을 보여주는 일 전. 그것은 당신이보고 싶어하는 그런 종류의 회사가 아닙니다. 대신 코드가 될 것이라고 지적 방법으로 다른 것들 모든보다 안전합니다.


1
+1-그러나-그러나-여러 전문가가 작성한 코드 피어 리뷰보다 코드가 더 안전하다고 주장한다고해서 절반의 보안 경험이있는 사람에게 큰 도움이되지는 않을 것입니다. 모두 보안 버그를 작성합니다. 요령은 나쁜 사람들보다 한 발짝 앞서 해결하는 것입니다.
Billy ONeal

@BillyONeal p. 마지막 단락되는 것을 의미 좀 ... 홀수로 당신을 공격 및 보안에 대한 접근 방식을 생각 재 정말 당신을 위해. PHP와 비 PHP 웹앱의 보안에 대해 많은 연구를 수행했으며 보고서가 혼란스럽고 PHP에 비해 크게 왜곡되었습니다. PHP가 나쁘다는 것은 아니지만, 보안은 진짜 관심사입니다.
tylerl

1
"또한, 고객이 사전 설치 한 것을 알고있는 유일한 플랫폼입니다." PHP가 사전 설치되었습니다. 그러나 내가 사용한 모든 Linux 배포판에는 Python 2.x가 포함되어 있습니다. 나는 일반적인 유틸리티가 그것에 의존하고 있다고 생각합니다.
ThorSummoner

9

PHP는 웹의 코볼입니다. 두 언어 모두 존경을 얻을, 아직 많은 사람들이 자신의 생활을 구축하고 그 안에 기록 된 시스템을 유지하게, 그들은 그 나라의 세계 거의 모든 주요 컴퓨터 시스템에서 (볼륨에 존재하는 , 웹 및 상업 기업이 각각). 두 언어는 모두 더 잘 배우고 툴링을 향상시킨 프로그래머가 주로 사용하는 오래되고 쓸모없는 습관을 바탕으로 다른 더 인기있는 다른 언어를 사용하는 사람들이 내려다보고 있습니다.

PHP는 운이 좋으면 COBOL의 삶을 살 수 있습니다. COBOL은 FORTRAN 이외의 것보다 오래 지속되었으며 곧 사라지지 않을 것입니다. 매일 사용하는 COBOL 프로그램은 관리하는 사람보다 나이가 많습니다. "새로운 인기"가 아닐 수도 있지만, 그와 함께 일하면서 항상 돈을 벌 수있을 것입니다.


4

나는 동전의 다른면을 이해하고 PHP의 부족을 인식하는 것이 유용 할 수 있다고 생각합니다. PHP는 템플릿 언어로 발전해 왔지만 여전히 개선 할 수있는 것이 많이 있습니다. PHP에는 여전히 부족한 부분이 있습니다. 유니 코드, 기능적 기능, 표준 라이브러리 구성 등 array.

PHP의 강점과 약점에 대해 건설적인 토론을하기 위해서는이 모든 것을 인정하는 것이 좋을 것입니다. "예, PHP 표준 라이브러리가 잘 정리되어 있지 않다는 것을 알고 있습니다. 그러나 오늘 작성된 경우 네임 스페이스와 객체 지향 API를 사용할 수 있습니다." "예, 기본 배열이 사전과 배열 구조를 혼합하여 약간 혼란스럽게한다는 것을 알고 있습니다. 그러나 더 나은 컬렉션을 원하면 SPL을 사용할 수 있습니다."

다른 사람들의 주장에 어떤 이유가 있다는 것을 아는 것을 보여 주면 당신의 견해는 더 강해질 것입니다.


2

왜?

자신을 변호해야한다고 느끼는 사람 (직업, 배우자, 소비 습관 등)은 자신의 시간을 낭비하고 있습니다. 자신을 방어하기 위해 시간을내는 것은 단순히 잘못된 종류의 사람들을 유머하는 것입니다. 이제는 자신의 시간뿐만 아니라 자신의 시간도 낭비하고 있습니다.

이 사람들을 당신의 삶에서 잘라내십시오-당신은 그들없이 잘 지냅니다.


4
답은 개인적으로 받아들이고 무시하는 것입니다. 이것은 문화적인 문제입니다. 차라리 오히려 문제를 해결하고 무지를 격추하기 위해 논증을 더 간결하게하고 싶습니다.
dukeofgaming 2012 년

3
진공 상태에서는 여기에 귀하의 조언에 동의하지만 PHP는 방어 할 수 없습니다. Mark Zuckerberg가 PHP의 끔찍함 에도 불구하고 어떻게 성공했는지 항상 감탄합니다 : codinghorror.com/blog/2008/05/…
Jim G.

1

PHP와 개발자의 가치를 사람들에게 납득시킬 수있는 짧고 달콤한 원 라이너는 없지만 질문을하기 직전에 매우 설득력있는 주장을 썼습니다.


1

"PHP는 나쁜 언어입니다"를 해결하려면, 해당 개인이 왜 나쁜 언어라고 생각하는지 알아 내야합니다. 아마도 그는 PHP로 작성된 나쁜 프로젝트에서 일했을 것입니다. 어쩌면 그는 변수 앞에 접두사를 좋아하지 않을 수도 $있습니다. 어쩌면 그들은 그들 자신이 언어를 사용하려고 시도하고 유지 불가능한 혼란을 썼을 것입니다. 다른 프로그래밍 언어에서 온 많은 프로그래머는 PHP를보고 혼란을 겪습니다. PHP의 의미가 다른 언어 나 다른 플랫폼에서는 실제로 의미가 없기 때문입니다. 예를 들어, PHP에서 배열은 "우주의 덕트 테이프"이며 거의 모든 것을 달성하는 데 사용되는 반면 다른 프로그래밍 언어에서는 그러한 것이 어리 석습니다.

나는 여기에 답변의 조합을 제안 할 것입니다.

  1. 으로 tylerl는 말했다, 당신은 현대적인 PHP는 나이가 사촌의보다 더 크게는 것을 보여주고있다. 의 nastiness는 사라졌다 create_function. 사라짐은 include모든 곳에서 수동으로 전화하는 정글입니다 .
  2. PHP에 결함이 있음을 인정하십시오. 모든 프로그래밍 언어에는 결함이 있습니다. 그렇지 않으면 많은 심각한 프로그래머가 "fanboi"라는 응답을 완전히 무시하게됩니다.
  3. PHP에서 다른 프로그래밍 언어로는 어려운 것들을 사람들에게 보여줍니다. 프로그래밍 언어는 일부 작업을 쉽게 수행 할 수 있도록 설계되었으므로 다른 작업을 수행하기가 어렵습니다. 씨? 메모리 조작과 비트 해킹은 정말 쉽고 언어는 간단하지만 큰 응용 프로그램을 유지 관리하는 것은 어렵습니다. 자바? 이 없으며 free모든 것이 "OO-ish"이지만 런타임이 커서 OO가 제한 될 수 있습니다. C ++? 언어에서 기본 형식 (예 : int)과 똑같이 동작하는 형식을 만들 수 있지만 복잡성이 많이 발생합니다. PHP? 프로그래밍 지식이 없어도 쉽게 시작할 수 있지만 인터넷에 많은 가비지 코드가 게시되어 있습니다.
  4. PHP의 비언어적 장점을 인정하십시오. PHP에는 여전히 성가신 언어가 많이 있습니다. 그러나 구성하기 쉽고 배포하기 쉬우 며 추가 작업없이 "연결"할 수있는 훌륭한 라이브러리가 제공됩니다.

모든 언어를위한 장소가 있습니다. 당면한 문제에 맞는 언어를 선택하십시오. 선호하는 언어를 속하지 않는 곳에 구두로 혼용하지 마십시오.


1
-1 : 왜 PHP를 방어하려고합니까? 코딩
Jim G.

1
@JimG .: OP가 요청한 것이기 때문입니다. 나는 여기서 악마의 옹호자를하고 있습니다. 나는 PHP로 일하는 것을 정말로 멸시한다. 그러나 시스템이 작업하기에 성가 신다고해서 그 시스템에 대해 좋은 점이 없다는 것을 의미하지는 않습니다. 주요한 문제들로부터도 배울 수 있습니다. :)
Billy ONeal

@BillyONeal 왜 당신은 그것으로 일하는 것을 싫어합니까? 스스로 결정하기.
johnny

@Johnny : 대부분 대규모 시스템 구축에 적합하지 않은 스크립팅 언어입니다. 스크립팅 언어는 신속한 프로토 타이핑, 배포 용이성 및 큰 표준 라이브러리와 함께 제공됩니다. 그러나 대규모 시스템을 구축하면 컴파일 타임 검사 및 제약 조건을 적용 할 수 없기 때문에 유지 관리가 어려워 질 수 있습니다. 스크립트 시나리오 (예 : 변수 유형이 지정되지 않음)에 PHP를 유연하고 유용하게 만드는 것은 구성 요소를 사용하는 소수 이상의 사람들과 함께 시스템을 구축하는 것을 어렵게합니다.
Billy ONeal

@Johnny : 명확히하기 위해-PHP로 큰 시스템을 구축하는 것이 불가능하다는 말은 아닙니다. Facebook과 Co.는 그것이 가능하다는 긍정적 인 증거입니다. 더 나은 컴파일 시간 구문과 의미 검사를 제공하는 언어보다 어려워집니다.
Billy ONeal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.