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

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

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

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

Задний план

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

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

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

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

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

Solutions Collecting From Web of "Что такое «настоящий» язык программирования?"

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

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

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

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

Он не компилируется

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

Это сценарий

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

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

Также не работает Java.

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

Конечно, PHP – это язык программирования. Вероятно, он имел в виду, что это не «настоящий» язык программирования в том же смысле, что «настоящие» люди не едят кише .

define: язык программирования

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

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

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

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

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

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

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

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

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

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

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

Все проблемы в информатике могут быть решены с другим уровнем косвенности.
– Дэвид Уилер

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

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

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

Отладка ожидается с отвращением, с неохотой, и хвастается вечно.
– Дэн Камински

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

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

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

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

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

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

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

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

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

ОБНОВЛЕНИЕ: внимательно прочитайте, прежде чем голосовать, это не мой подход к PHP / Java, я пытаюсь понять, как его учитель видит PHP / Java. Благодарю.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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