"실제"프로그래밍 언어는 무엇입니까?
최근에 한 교사가 "PHP는 실제 프로그래밍 언어가 아닙니다"라고 말했지만 제 생각에는 약한 정당성을 제시했습니다.
- 컴파일되지 않았습니다.
- 스크립트입니다.
- 모든 플랫폼에서 실행되는 것은 아닙니다.
PHP는 "실제"프로그래밍 언어로 간주되지 않습니까? "실제"프로그래밍 언어는 무엇입니까? 언어는 진지하게 받아 들여 져야만합니까?
배경
저는 이틀 전에 학교에서 A-Level 컴퓨팅 수업에 입문 수업을했습니다. 우리는 과정의 첫해에 Java를 사용하고 있습니다. 저는 Java에 익숙하지 않지만 일반적인 프로그래밍 기본 사항 (변수, 함수, 객체 지향, 루프 등)에 대해 잘 알고 있습니다.
우리의 첫 번째 과제는 선생님이 엄청나게 빠르게 진행했습니다. 그녀는 개념, 작동 방식 또는 현실적으로 사용할 목적에 대해 설명하지 않았으며 대부분의 학생들 (전체적으로 프로그래밍을 처음 접한)을 보는 데 큰 기쁨을 느끼는 것처럼 보였습니다. 그녀가 무엇을하고 있는지 모호하게 생각하지 못한 채 자리에 앉았습니다. 돌이켜 보면, 학생들이 9 월이 시작되기 전에 과목을 변경할 수있는 기회가 여전히 있기 때문에 누가 컴퓨팅 A- 레벨을 실제로 "처리"할 수 있는지 확인하기 위해 그녀가 믿을 수 없을 정도로 빨리이 과정을 거쳤다 고 생각합니다.
첫 번째이자 유일한 작업은 바이너리를 denary (10 진수)로 변환하는 Java 명령 줄 응용 프로그램을 작성하는 것이 었습니다. 우리는 이것을하기 위해 2 시간의 시음 자 세션을 가졌고, 바이너리 시스템이 어떻게 작동하는지 설명한 후에 우리는 전체적으로 어디서부터 시작해야할지 가장 잘 모르는 사람이 없었음에도 불구하고 시작해야했습니다. 한 시간이 지난 후 어떤 사람들은 다른 사람들보다 멀었지만 아무도 실제로 중요한 것을 얻지 못했습니다. 선생님 자신이 너무 혼란스러워 옆집에서 다른 선생님을 불렀습니다. 그는 사람들을 돕고 다음에 어디로 가야할지 보려고 돌아 왔습니다.
자랑하지 않고, 나는 아마도 수업에서 가장 많은 경험을했고 연습에서 가장 멀어 졌을 것입니다. 그는 나에게 이전 경험이 있었는지 물었다. 특히 PHP에서 그렇다고 말했고, Java 애플리케이션이 여러 코드 화면으로 빠르게 성장하는 동안 PHP 몇 줄로 바이너리를 denary로 변환하는 무언가를 작성할 수 있다고 농담으로 말했습니다.
그는 "PHP는 실제 프로그래밍 언어가 아닙니다!"라고 대답했습니다 ...! 약간의 논의 끝에 그는 위의 세 가지 이유를 설명했습니다. 그러나 나는 Apache를 실행하는 모든 플랫폼에서 PHP를 실행할 수 있다고 지적했지만 그는 Apache가 무엇인지 실제로 알고 있지 않으며 전혀 가지고 있지 않다고 생각합니다!
먼저 프로그래밍 언어가 무엇인지 알아야합니다. 최소한 프로그래밍 언어 는 컴퓨터가 읽고 특정 작업을 수행하도록 지시하는 것입니다. 많은 사람들은 또한 범용 프로그래밍 언어 가 튜링이 완성 되기를 기대합니다 . 그러나 도메인 별 언어 가 튜링이 완전하지는 않지만 해당 특정 도메인에 유용한 프로그래밍 언어 인 상황이있을 수 있습니다 . 프로그래밍 언어는 컴파일하거나 해석 할 수 있으며 여러 플랫폼 또는 하나의 특정 플랫폼에서 실행할 수 있습니다. 요구 사항에 따라 프로그래밍 언어가 다릅니다. 분명히 PHP는 프로그래밍 언어입니다.
"실제"프로그래밍 언어에 대한 나의 정의는 실제 세계에서 적어도 하나의 실제 사용을 갖는 프로그래밍 언어입니다. 이것은 일반적으로 실용적이지 않은 난해한 프로그래밍 언어 와 반대됩니다 . PHP는 실제 문제를 해결하는 데 널리 사용되기 때문에 특히 아름다운 언어는 아니지만 실제 프로그래밍 언어라는 요구 사항을 쉽게 충족합니다.
PHP는 실용적인 언어입니다. 웹 페이지 (원래 개인 홈 페이지의 이름이었던 이름)를 빠르게 만들 수 있어야한다는 특정 요구에서 만들어졌으며 필요에 따라 언어가 확장되었습니다. 그것의 창조를 이끄는 이론적 배경이나 강력한 디자인 원칙이 없었기 때문에 (언어의 공식적인 사양조차도 없음) 다른 많은 현대 언어보다 덜 깨끗합니다. 외국 문자 / 유니 코드 문자의 올바른 처리와 같은 기능은 나중에 분명히 추가되고 나머지 언어와 완전히 통합되지 않습니다. 이러한 어수선 함과 이론적 엄격함의 결여로 인해 많은 사람들 (특히 학계)이 언어를 싫어하게되며 이는 교사가 PHP를 "실제"언어로 간주하지 않는 이유 중 일부일 수 있습니다.
그러나 PHP는 그것이 설계된 것에 능숙하고 많은 사이트에서 그것을 사용합니다. 심지어 Facebook, Yahoo! 및 Wikipedia.
컴파일되지 않았습니다.
PHP를 컴파일 할 수 있습니다 (예 : HHVM을 통해 ).
스크립팅
이것은 PHP가 컴파일되지 않았다는 또 다른 방법입니다.
모든 플랫폼에서 실행되는 것은 아닙니다.
Java도 마찬가지입니다.
선생님이 정말 나쁜 것 같네요.
물론 PHP는 프로그래밍 언어입니다. 그는 아마도 "진짜"남자가 파이를 먹지 않는 것과 같은 의미에서 "진짜"프로그래밍 언어 가 아니라는 것을 의미했을 것입니다 .
이것에 따르면 PHP는 프로그래밍 언어 인 것 같습니다. 실제 프로그래밍 언어 인지 여부 는 전적으로 주관적입니다. 좋은 언어 인지 여부 도 주관적입니다. 물론 가장 일반적으로 애플리케이션 프로그래밍 언어 로 사용되지는 않지만 CLI 를 통해 쉘 애플리케이션을 개발하는 데 사용할 수 있습니다 . 나는 이것을 한 적이 없기 때문에 그것에 대한 나의 이해는 개략적이지만 가능합니다 .
이제 PHP가 "스크립팅"되어 있습니까 (스크립팅 언어를 의미 함), 모든 플랫폼에서 실행됩니까? 당신은 판단합니다 :
PHP : 하이퍼 텍스트 전처리 기는 원래 동적 웹 페이지를 생성하기 위해 웹 개발 용으로 설계된 널리 사용되는 범용 스크립팅 언어입니다. 이를 위해 PHP 코드는 HTML 소스 문서에 삽입되고 웹 페이지 문서를 생성하는 PHP 프로세서 모듈이있는 웹 서버에서 해석됩니다. 범용 프로그래밍 언어 인 PHP 코드는 원하는 운영 체제 작업을 수행하고 표준 출력 채널에서 프로그램 출력을 생성하는 명령 줄 모드에서 인터프리터 응용 프로그램에 의해 처리됩니다. 그래픽 응용 프로그램으로도 작동 할 수 있습니다. PHP는 대부분의 최신 웹 서버용 프로세서와 대부분의 운영 체제 및 컴퓨팅 플랫폼에서 독립형 인터프리터로 사용할 수 있습니다.
Java는 모든 플랫폼에서 실행됩니까? 아니요. JVM이있는 경우에만 해당됩니다.
마지막으로 언어를 컴파일해야합니까? 많은 사람들이 그렇지 않습니다. Java조차도 C 또는 C ++와 같은 방식으로 컴파일되지 않습니다. 그리고 Perl, Python 등도 살펴 봐야합니다.
개인적으로 PHP는 실제 프로그래밍 언어라고 생각합니다. 나는 거기서 시작했고 쉽게 C / C ++와 자바로 넘어 갔다. Java와 같은 목적으로 사용하지 않을 것이며 디자인도 Java와 다르지만 그다지 의미가 없습니다. 저에게는 Java보다 배우기 가 쉬웠 습니다.
우선, 컴파일되지 않고 해석되지 않는 것 (그가 확실히 스크립팅으로 의미하는 것은 다소 모호하고 다른 목적으로 사용됨)은 동일한 동전의 다른면이므로 실제로 동일한 이유입니다.
모든 플랫폼에서 실행되지 않는 마지막 이유는 혼란 스러울뿐입니다. 그가 Java의 이식성을 선전하려는 것처럼 들리며 PHP는 단순히 Java가 아닙니다. 그러나 Java는 하나의 매우 특정한 플랫폼 인 JVM에서 실행됩니다. 이 플랫폼은 다른 많은 플랫폼에서 실행되므로 Java에 이식성을 제공하지만 기존의 "이동성"사용과는 다릅니다. 예를 들어 C는 이식 가능하며 PDP-11에서 최신 임베디드 장치에 이르기까지 모든 곳에서 실행됩니다.
그러나 C는 자체 추상 플랫폼의 규칙을 지정하여이를 수행하고 컴파일러는 이러한 규칙에 따라 C 코드를 어셈블리로 변환합니다. 이것이 Java의 이식성이 C와 유사한 방식입니다. 둘 다 특정 구체적인 기계 (프로세서)에 대한 명령으로 변환되는 규칙을 정의합니다. 차이가 발생하는 경우입니다.
컴퓨터 과학의 모든 문제는 다른 수준의 간접적으로 해결 될 수 있습니다.
— 데이비드 휠러
실제로 어셈블리 또는 "머신 코드"조차도 프로세서에 의해 고유 작업으로 해석됩니다. (저는 이것에 대한 좋은 소스를 가지고 있지 않지만, 어쨌든 좋은 프리젠 테이션 인 Modern Hardware의 Crash Course에서 가볍게 다루었다는 것을 기억 합니다.) 프로세서 속도가 빨라질수록 우리는 잘 사용되지 않는 박스를 거의 알아 차리지 못합니다. 주어진 프로그램이 asm에 있든 인터프리터를 통해 실행 되든, 여기서 "실제 프로그래밍 언어"의 정의가 작용합니다.
"실제 프로그래밍 언어"를 정의하는 유일한 현명한 방법은 "실제 작업을 수행하기위한 언어"이지만, 실제로는 "실제"의 정의에도 영향을 미칩니다. (그러나 그것은 난해한 프로그래밍 언어 와의 구별을 확립합니다. 예를 들어 Malbolge 에서 실제 작업을 수행하는 사람이 없기 때문에 "진짜"의 정의에 대해 10 명이 동의 할 수 있습니다.) 그리고 오늘날과 비교하면 귀하의 프로그래밍 언어의 선택은 과거의 구현 전략과 오버 헤드 (예 : 런타임 인터프리터)에 의해 훨씬 더 제한되었습니다. 그러나 오늘날에도 일부 언어는 특정 응용 프로그램 및 예상 부하에 대해 다른 언어보다 "실제"이며 모두 요구 사항에 따라 다릅니다.
It sounds like your teacher has only experienced PHP through toy web applications (and maybe using 'application' is a stretch for what he's seen). Toy programs aren't real work. PHP definitely has a lot of problems, but I could not say it isn't a real programming language, except in jest.
Debugging is anticipated with distaste, performed with reluctance, and bragged about forever.
— Dan Kaminsky
There is a certain association of "real" with "hard to do" (related to "real work") and your teacher may have been expressing this sentiment. This has always appeared to me as a form of bikeshedding (there's a better term for this exactly, but I can't remember it), where one's estimation of the value of a thing is related to the effort one had to put into it (e.g. a bikeshed is more important when I provided input on the color of the roof and whether it should have a sign). We intrinsically value our own effort more than that of others – just because we're familiar with it, if for no other reason – even when it doesn't make sense to do so. PHP, despite its faults, does make some things easy, and it and programs written in it can consequently be perceived as worth less.
Facebook, Digg, Wikipedia, Yahoo. I guess those aren't real websites.
Back when I was learning PHP, I too didn't believe PHP to be a programming language.
I'm not sure where I picked the idea up, but I learned somewhere that a scripting language is not a programming language. So I applied this thinking to other languages, such as JavaScript and SQL.
Since then I have changed my mind and understand now that there is a spectrum of languages that goes from high level (e.g. PHP, Javascript) to low level (e.g. c, assembler) with things like C# and Java somewhere in between.
You are right. These reasons are too weak. Actually you don't even need Apache to run PHP.
And first two reasons are just repeat themselves as it's only one reason actually. So, one can say 'PHP is not compiled language' but that doesn't mean it's 'not real programming language'. Java programs doesn't compile into machine codes too - well, it's not a real language as well. q.e.d.
Sorry for the OT, but there are so, so many things wrong with this picture! I just hope that you will bail out of that class, that department, and that school just as quickly as you can. I promise that you'll have nothing near to a semester's worth of knowledge when February comes. And, if you're like me, you'll spend your classroom hours in frustration, resentment, and rage at the time your teacher is wasting for you.
That woman is no teacher! Decimal to binary as an intro to coding? Gruesome!
Is it the University (ha!) of Phoenix?
UPDATE: read carefully before you vote, this is not my approach to PHP/Java, I'm trying to see how his teacher sees the PHP/Java thing. Thanks.
What I think your teacher thought: PHP is a language which is locked inside a webserver, mostly used to generate web pages.
Java, on the other hand, is a general-purpose language used for web pages too but used in other industries like microwaves & cars, you can write desktop application in Java etc.
With this in mind it's understandable why your teached said "PHP isn't a real programming language!"
I'm not biased, I don't like both, Java & PHP :) ...but have to use them both
There is no such thing as a real programming language, real man, or real world. You are a programmer if you can program in PHP.
Certainly, PHP is a programming language. It is even Turing-complete language, which basically means that its "power" is equal to "power" of other programming languages. It is "real" both in strict (it really exists) and metaphorical sense (there are people making their living using PHP). So it seems that your teacher is somehow biased.
However, I see some point in your teacher attitude. PHP and Java come from radically different backgrounds. Despite being useful, PHP is very chaotic. Compare standard class library in Java with standard library of PHP functions - the latter looks just like huge set of unrelated tools. Moreover, there are a lot of PHP tutorials on the Web that are of, politely speaking, mediocre quality. Because you are learning how to program, it's best to learn using good tools, and Java is much better tool to learn programming than PHP.
PS. Google for "PHP sucks" to get tons of information why PHP isn't the best tool in the world.
"So, in the 'definition of a programming language', what makes PHP not a 'proper' one?"
The real reason is the fact that most people do not use it as a general purpose application programming language.
It is because there have been always languages which are better suited (with one exception: what PHP was created for, web programming). PHP is "yet another language not even with better design features over existing ones". Some examples of issues when comparing to different other languages include: lack of stable and portable GUI toolkits (at least on Windows/MacOS), lack of threading, lack of speed, and so on.
Ultimately, people who are going to write general applications in PHP, are mostly people who only know well PHP as a programming language. Because there is no reason to write a new application from scratch in PHP: you'll find that most experimented or talented programmers would never consider doing this.
Its just one of those stupid things people repeat to make themselves sound smarter and shut you ups, its cargo cult smugness. If you ask him to explain, he'll either pretend it was a joke(tell him "nice try"), or try pathetically to defend his position (tell him "oh i see", and back away slowly)
Just to put an argument in the other direction to everyone else...
I feel slightly uncomfortable thinking of PHP as a programming language because I'm not convinced you end up with a program. You don't leave your PHP app running, rather a PHP page is requested and is loaded and processed in order to generate an output page, with side-effects like DB changes, etc.
None of this means PHP can't technically be described as a programming language but I think it's reasonable to separate it somehow from Java/C++ where a program can be left running with some concept of state. Each PHP file is surely its own 'program' since you can request any PHP page... there's no entrypoint to a PHP web-application except the convention of calling the right pages.
참고URL : https://stackoverflow.com/questions/3222316/what-is-a-real-programming-language
'program tip' 카테고리의 다른 글
Visual Studio 2012가 vs2010 솔루션을 변환하지 않습니까? (0) | 2020.11.06 |
---|---|
ListView에서 스크롤 업 및 스크롤 다운 감지 (0) | 2020.11.06 |
Django 요청 매개 변수 가져 오기 (0) | 2020.11.06 |
int를 나누고 Objective-C에서 반올림 (0) | 2020.11.06 |
CSS에서 원 섹터를 그리는 방법은 무엇입니까? (0) | 2020.11.06 |