Что такое "настоящий" язык программирования?

Недавно преподаватель сказал: "PHP не настоящий язык программирования", но только дал, на мой взгляд, слабое оправдание:

  • Он не скомпилирован.
  • Это сценарий.
  • Он не запускается на каждой платформе.

Является ли PHP не "реальным" языком программирования? Что такое "настоящий" язык программирования? Должен ли компилироваться язык для серьезного рассмотрения?

Фон

Я сделал урок индукции в своем классе вычислений A-Level в школе два дня назад - ndash; мы используем Java в течение первого курса курса. Я незнаком с Java, но имею довольно хорошее представление об общих принципах программирования (переменные, функции, объектная ориентация, петли и т.д.).

Наша первая задача - учитель бегала быстро. Она не удосужилась объяснить какие-либо концепции, то, как они работают, или то, на что вы бы реалистично их использовали, и, казалось, с большим удовольствием наблюдала, как большинство студентов (которые в целом были новичками в программировании) извивались на своих местах, не имея смутного представления о том, о чем она была. Оглядываясь назад, я считаю, что она прошла невероятно быстро, чтобы понять, кто может "справиться" с использованием Computing A-Level, так как у студентов все еще есть шанс изменить свои сюжеты до начала сентября.

Первой и единственной задачей было написать приложение командной строки Java для преобразования двоичного кода в денаймер (десятичное). Для этого у нас была двухчасовая сессия для дегустатора, и после объяснения того, как работает двоичная система, нам нужно было начать, несмотря на то, что в целом никто не имеет туманной идеи, с чего начать. Через час некоторые были дальше других, но никто на самом деле ничего не сделал. Сама учительница настолько запуталась, что позвонила другому учителю из соседней комнаты. Он пришел, чтобы помочь людям и посмотреть, куда идти дальше.

Без хвастовства я, вероятно, обладал наибольшим опытом в классе и стал самым дальним в упражнении. Он спросил меня, есть ли у меня предыдущий опыт; Я сказал "да", особенно в PHP, и в шутку прокомментировал, что я могу написать что-то, чтобы преобразовать двоичный код в несколько строк PHP, в то время как приложение Java быстро перерастало в несколько экранов кода.

Он ответил: "PHP не настоящий язык программирования!"...! После некоторого обсуждения он дал три причины выше. Тем не менее, я указал, что вы можете запускать PHP на любой платформе, на которой запущен Apache, но я не думаю, что он действительно знает, что такое Apache, и не имеет этого!

Ответ 1

Сначала нам нужно знать, что такое язык программирования. Как минимум, язык программирования - это то, что читается компьютером и инструктирует его выполнять определенные операции. Многие люди также ожидали, что язык программирования общего назначения будет Turing complete. Однако могут быть ситуации, когда язык, специфичный для домена не является полным Turing, но по-прежнему является полезным языком программирования для этого конкретного домена. Языки программирования могут быть скомпилированы или интерпретированы, и они могут работать на многих платформах или только в одном конкретном. Для разных потребностей требуются разные языки программирования. Очевидно, что PHP - это язык программирования.

Моим определением "реального" языка программирования будет любой язык программирования, который имеет хотя бы одно практическое применение в реальном мире. Это противоречит эзотерическому языку программирования, который обычно не имеет практического использования. Поскольку PHP широко используется для решения реальных задач, он легко удовлетворяет этому требованию для реального языка программирования, хотя он, возможно, не является особенно красивым языком.

PHP - это прагматичный язык. Он был создан из определенной необходимости, чтобы иметь возможность быстро создавать веб-страницы (название первоначально предназначалось для личных домашних страниц), и язык был расширен по мере необходимости. Поскольку теоретический фон или сильные принципы дизайна, основанные на его создании (нет даже формальной спецификации языка), он не менее чист, чем многие другие более современные языки. Такие функции, как правильная обработка символов иностранных символов/юникода, явно добавляются впоследствии и не полностью интегрируются с остальной частью языка. Эта неопрятность и отсутствие теоретической строгости заставляют многих людей (особенно ученых) не любить язык, и это может быть причиной того, почему ваш учитель не считает PHP "реальным" языком.

Однако PHP хорош тем, для чего он был разработан, и многие сайты используют его, даже очень крупные сайты, такие как Facebook, Yahoo! и Википедия.

Ответ 2

Он не скомпилирован

Это может быть.

Сценарий

Ах! Хитроумная техника повторения аргумента после его перефразирования, чтобы она звучала как другой аргумент.

Он не запускается на каждой платформе

Не работает Java.

Похоже, у вас там действительно плохой учитель.

Ответ 3

Конечно, PHP - это язык программирования. Вероятно, он имел в виду, что это не "реальный" язык программирования в том же смысле, что "реальные" мужчины не едят кибера.

Ответ 4

определить: язык программирования

Кажется, в соответствии с этим PHP является языком программирования. Является ли это реальным языком программирования полностью субъективным. Является ли он хорошим языком также субъективным. Конечно, он чаще всего не используется в качестве языка программирования приложения, но его можно использовать для разработки приложений оболочки через CLI. Я никогда не делал этого, поэтому мое понимание этого является отрывочным, но это возможно.

Теперь, PHP "сценарий" (я полагаю, это означает язык сценариев), и работает ли он на каждой платформе? Вы судите:

PHP: Hypertext Preprocessor - широко используемый язык общего назначения, который был первоначально разработан для веб-разработки для создания динамических веб-страниц. С этой целью PHP-код встроен в исходный документ HTML и интерпретируется веб-сервером с модулем процессора PHP, который генерирует документ веб-страницы. В качестве языка программирования общего назначения PHP-код обрабатывается приложением интерпретатора в режиме командной строки, выполняя требуемые операции операционной системы и производя вывод программы на своем стандартном выходном канале. Он также может функционировать как графическое приложение. PHP доступен как процессор для большинства современных веб-серверов и как автономный интерпретатор на большинстве операционных систем и вычислительных платформ.

Источник: http://en.wikipedia.org/wiki/PHP

Является ли Java даже запущенным на каждой платформе? Нет. Только те, для которых существует JVM.

Наконец, нужно ли компилировать язык? Многие нет. Даже Java не скомпилируется так же, как C или С++. И тогда вам также нужно взглянуть на Perl, Python и т.д.

Лично я считаю, что PHP - настоящий язык программирования. Я начал там и легко перешел на C/С++ и Java. Я бы не использовал его с той же целью, что и Java, и его дизайн отличается от Java, но это мало значит. Мне было легче учиться, чем Java для меня.

Ответ 5

Facebook, Digg, Википедия, Yahoo. Я предполагаю, что это не настоящие сайты.

Ответ 6

Прежде всего, не скомпилированный и интерпретируемый (то, что он, конечно же, подразумевал под сценарием, которое в некоторой степени расплывчато и используется для разных целей) - разные стороны одной и той же монеты и, следовательно, по той же причине.

Последняя причина, по которой он не работает на каждой платформе, просто запутан. Похоже, он пытается рекламировать переносимость Java, а PHP просто не Java. Однако Java работает на одной очень конкретной платформе: JVM. Эта платформа, в свою очередь, работает на многих других платформах и, таким образом, дает Java ее переносимость, но это не совсем так же, как традиционное использование "портативных". Например, C является портативным и работает на всем, начиная от PDP-11 и заканчивая последними встроенными устройствами.

Однако C делает это, задавая правила своей собственной абстрактной платформы, а компиляторы преобразуют C-код в сборку в соответствии с этими правилами. Именно так Java-совместимость похожа на C: они определяют правила, которые переводятся в инструкции для конкретной конкретной машины (процессора); разница в том, когда это происходит.

Все проблемы в информатике могут быть решены с еще одним уровнем косвенности.
& ЕПРС; & ЕПРС; — Дэвид Уилер

В действительности даже сборка или "машинный код" интерпретируется процессором в его нативные действия. (Для этого у меня нет хорошего источника, но я помню, что он слегка покрыт A Crash Course в современном оборудовании, который хорошая презентация в любом случае.) По мере ускорения скорости процессора мы почти не замечаем на наших недоиспользуемых ящиках, является ли данная программа в asm или запущена через интерпретатор, но именно здесь вступает в действие определение "реального языка программирования".

Единственный разумный способ определения "реального языка программирования" - это "язык, на котором нужно выполнить настоящую работу", но это действительно влияет на определение "реального". (Тем не менее, он устанавливает различие между эзотерическими языками программирования, потому что никто не делает реальной работы, например, в Malbolge, для любого определения "реального" вы могли бы получить десять человек, чтобы согласиться.) И, по сравнению с сегодняшним, ваш выбор языка программирования был гораздо более ограничен их стратегии реализации и накладных расходов (например, интерпретатора времени выполнения) в прошлом. Однако даже сегодня некоторые языки более "реальны", чем другие, для определенных приложений и ожидаемых нагрузок, все зависит от ваших требований.

Похоже, ваш учитель только испытал PHP через игрушечные веб-приложения (и, возможно, использование "приложения" - это растяжка для того, что он видел). Игрушечные программы - это не настоящая работа. PHP определенно имеет много проблем, но я не мог сказать, что это не настоящий язык программирования, за исключением шуток.

Отладка ожидается с отвращением, с неохотой, и хвастается вечно. & ЕПРС; & ЕПРС; — Дэн Каминский

Существует определенная связь "реального" с "трудным делом" (связанная с "реальной работой" ), и ваш учитель, возможно, выражал это чувство. Это всегда казалось мне формой bikeshedding (там лучше для этого, но я не помню), где один оценка стоимости вещи связана с усилием, которое нужно было вложить в нее (например, велосипед более важен, когда я представил входные данные о цвете крыши и должен ли он иметь знак). Мы внутренне оцениваем наши собственные усилия больше, чем другие; просто потому, что мы знакомы с ним, если не по какой-либо другой причине - ndash; даже если это не имеет смысла. PHP, несмотря на его недостатки, делает некоторые вещи легкими, и это и написанные на нем программы могут, следовательно, восприниматься как менее достойные.

Ответ 7

Когда я изучал PHP, я тоже не считал PHP языком программирования.

Я не уверен, где я выбрал эту идею, но где-то я узнал, что язык сценариев не является языком программирования. Поэтому я применил это мышление к другим языкам, таким как JavaScript и SQL.

С тех пор я передумал и понял теперь, что есть спектр языков, который идет от высокого уровня (например, PHP, Javascript) до низкого уровня (например, c, ассемблер) с такими вещами, как С# и Java, где-то посередине.

Ответ 8

Извините за OT, но есть так, так много чего не так с этой картиной! Я просто надеюсь, что вы выйдете из этого класса, этого отдела и этой школы так же быстро, как сможете. Я обещаю, что у вас не будет ничего близкого к знанию семестра, когда придет февраль. И, если вы похожи на меня, вы потратите свое время в классе на расстройство, обиду и ярость в то время, когда ваш учитель тратит на вас время.

Эта женщина не учитель! Десятичное значение в двоичном виде как введение в кодирование? Ужасный!

Это Университет (ха!) Феникса?

Ответ 9

Вы правы. Эти причины слишком слабы. На самом деле вам даже не нужно, чтобы Apache запускал PHP.
И первые две причины просто повторяются, поскольку это только одна причина. Итак, можно сказать, что "PHP не скомпилирован", но это не значит, что это не настоящий язык программирования. Java-программы тоже не компилируются в машинные коды - ну, это не настоящий язык. что и требовалось доказать

Ответ 10

Нет такого понятия, как настоящий язык программирования, настоящий человек или реальный мир. Вы программист, если можете программировать на PHP.

Ответ 11

UPDATE: внимательно прочитайте, прежде чем проголосовать, это не мой подход к PHP/Java, Я пытаюсь увидеть, как его учитель видит PHP/Java. Спасибо.

Я думаю, что ваш учитель подумал: PHP - это язык, который заблокирован внутри веб-сервера, в основном используется для создания веб-страниц.

Java, с другой стороны, является языком общего назначения, который используется также для веб-страниц, но используется в других отраслях, таких как микроволновые печи и автомобили, вы можете писать настольные приложения на Java и т.д.

С учетом этого понятно, почему ваш преподаватель сказал: "PHP не настоящий язык программирования!"

Я не предвзятый, мне не нравятся как Java, так и PHP:)... но они должны использовать их как

Ответ 12

Его просто одна из тех глупых вещей, которые люди повторяют, чтобы заставить себя казаться умнее и заткнуть вас вздохами, его грубой культурой. Если вы попросите его объяснить, он либо притворится, что это шутка (скажите ему "хорошая попытка" ), либо попытайтесь искусно защитить свою позицию (скажите ему "о, я вижу", и медленно отступаю)

Ответ 13

"Итак, в" определении языка программирования ", что делает PHP не" правильным "?

Настоящая причина заключается в том, что большинство людей не используют ее как язык программирования общего назначения.

Это потому, что всегда были языки, которые лучше подходят (за одним исключением: для PHP был создан, для веб-программирования). PHP - "еще один язык, даже не имеющий лучших дизайнерских функций над существующими". Некоторые примеры проблем при сравнении с другими другими языками включают в себя: отсутствие стабильных и портативных инструментов GUI (по крайней мере, в Windows/MacOS), отсутствие потоков, отсутствие скорости и т.д.

В конечном счете, люди, которые собираются писать общие приложения на PHP, - это в основном люди, которые хорошо знают PHP как язык программирования. Поскольку нет оснований писать новое приложение с нуля в PHP: вы обнаружите, что большинство опытных или талантливых программистов никогда не подумают об этом.

Ответ 14

Конечно, PHP - это язык программирования. Это даже полный язык Тьюринга, который в основном означает, что его "сила" равна "власти" других языков программирования. Он "реален" как в строгом (он действительно существует), так и в метафорическом смысле (есть люди, которые зарабатывают на жизнь с помощью PHP). Так что кажется, что ваш учитель каким-то образом предвзятым.

Тем не менее, я вижу некоторый момент в отношении вашего учителя. PHP и Java происходят из совершенно разных слоев. Несмотря на полезность, PHP очень хаотичен. Сравните стандартную библиотеку классов в Java со стандартной библиотекой функций PHP - последняя выглядит так же, как огромный набор несвязанных инструментов. Более того, в Интернете есть много уроков PHP, которые, мягко говоря, посредственны. Поскольку вы учитесь программировать, лучше всего учиться с использованием хороших инструментов, а Java - гораздо лучший инструмент для обучения программированию, чем PHP.

PS. Google за "PHP сосет", чтобы получить тонны информации, почему PHP не лучший инструмент в мире.

Ответ 15

Просто чтобы поставить аргумент в другом направлении всем остальным...

Мне немного неудобно думать о PHP как о языке программирования, потому что я не уверен, что вы закончите с программой. Вы не оставляете свое приложение PHP, а запрашивается страница PHP и загружается и обрабатывается для создания выходной страницы с такими побочными эффектами, как изменения в DB и т.д.

Ничто из этого не означает, что PHP не может быть технически описан как язык программирования, но я считаю разумным отделить его от Java/С++, где программа может быть запущена с некоторым понятием состояния. Каждый PHP файл, безусловно, является его собственной "программой", поскольку вы можете запросить любую страницу PHP... нет точки входа в веб-приложение PHP, кроме соглашения о вызове правильных страниц.