Что делает “мощный” средний при обсуждении языков программирования?

В контексте обсуждения/сравнения языка программирования, что означает термин "питание"?

Это имеет четко определенное значение? Даже плохо определенное значение?

Скажите, говорит ли кто-то, что "язык X более мощен, чем язык Y" или спрашивает то же как вопрос, что они имеют в виду - или какую информацию они пытаются узнать?

27
задан Joel Coehoorn 9 December 2011 в 17:57
поделиться

11 ответов

Это не имеет четко определенного значения. В дискуссиях такого типа «язык X более мощный, чем язык Y» обычно означает немногим больше, чем «мне нравится язык X больше, чем язык Y». На другом конце спектра у вас также обычно есть кто-то, кто будет рассказывать о том, как любой полный по Тьюрингу язык может выполнять те же задачи, что и любой другой полный по Тьюрингу язык, так что ни один из них не является строго более мощным, чем другой.

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

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

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

29
ответ дан 28 November 2019 в 04:12
поделиться

C мощный, потому что он низкоуровневый и дает вам доступ к оборудованию. Python мощен, потому что вы можете быстро создавать прототипы. Lisp мощен, потому что его REPL дает вам фантастические возможности отладки. SQL - это мощный инструмент, потому что вы говорите то, что хотите, а DMBS найдет лучший способ сделать это за вас. Haskell мощен, потому что каждую функцию можно тестировать изолированно. C ++ мощен, потому что в нем в десять раз больше синтаксических конструкций, которые когда-либо нужны или используются любому человеку. APL является мощным средством, поскольку он может втиснуть программу с десятью экранами в десять символов. Черт, COBOL силен, потому что ...зачем еще все банки использовать его? :)

22
ответ дан 28 November 2019 в 04:12
поделиться

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

Таким образом, в основном определение« мощности »является чисто субъективным и не имеет смысла в любом объективном обсуждении.

8
ответ дан 28 November 2019 в 04:12
поделиться

На самом деле людей беспокоят только два значения:

«мощный» в смысле «требует меньше ресурсов (времени, денег, программистов, LOC и т. Д.) Для достижения того же / лучшего результата», и «мощный» в смысле «способен выполнять широкий круг задач».

Некоторые языки чрезвычайно ресурсоэффективны для небольшого круга задач. Другие не столь ресурсоэффективны, но могут применяться для широкого круга задач (например, C, который часто используется при разработке ОС, создании компиляторов и библиотек времени выполнения, а также для работы с микроконтроллерами).

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

4
ответ дан 28 November 2019 в 04:12
поделиться

Я помню, как многие преподаватели в колледжах называли язык, на котором они учили, «могущественным».

Заставляет задуматься:

Мощный = относительный термин , сравнивающий последний способ кодирования чего-либо с исходным или предыдущим способом.

0
ответ дан 28 November 2019 в 04:12
поделиться

ничего абсолютно ничего.

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

Пол Грэм - очень высокоуровневый парень, вот что он хочет сказать: http://www.paulgraham.com/avg.html

Java-парни могут сказать вам что-то о переносимости, способности охватить каждую платформу.

Программисты C/UNIX могут сказать вам, что это скорость и эффективность, полный контроль над каждым дюймом памяти.

Программисты VHDL/Verilog скажут, что это полный контроль над каждым тактом и затвором, чтобы не тратить зря ни электричество, ни время.

Но, по моему мнению, "мощный язык" поддерживает все возможности, необходимые для выполнения вашей задачи. Документация может быть важна, или, возможно, это портативность, или возможность делать графику. Это может быть что угодно, писать gui на Ассемблере просто глупо, как и пытаться спроектировать встроенный процессор на flash.

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

2
ответ дан 28 November 2019 в 04:12
поделиться

Я рассматриваю этот термин как маркетинговую ерунду, без четко определенного значения.

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

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

1
ответ дан 28 November 2019 в 04:12
поделиться

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

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

Какой язык мощнее (кроме того, что это несколько субъективно), в значительной степени зависит от того, что вы пытаетесь сделать. Если ваши требования заключаются в том, чтобы заставить что-то работать на небольшом устройстве с 64k памяти, то вы, скорее всего, не будете использовать Java. Скорее всего, подходящим языком будет C или C++ (или, если вы действительно хардкорный ассемблер). Если вам нужно очень простое CRUD приложение, сделанное за 1 день, возможно, что-то вроде Ruby On Rails будет подходящим вариантом (я знаю, что Rails - это фреймворк, а Ruby - язык, но в наши дни доступные библиотеки и фреймворки сильно влияют на выбор языка)

.
2
ответ дан 28 November 2019 в 04:12
поделиться

"Мощный" не имеет реального технического значения, но многие люди делали предложения.

Несколько наиболее интересных:

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

  • Матиас Феллейзен написал очень серьезное теоретическое исследование под названием О выразительной силе языка программирования.

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

11
ответ дан 28 November 2019 в 04:12
поделиться

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

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

Иногда языки "сильны" в нескольких областях. Это дает им общий тег "мощный" (или значок, поскольку мы здесь на SO). PG утверждает, что с LISP дело обстоит именно так. Это может быть правдой, а может и не быть.

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

6
ответ дан 28 November 2019 в 04:12
поделиться

Как правило, существует два различных значения:

  • Выразительный, то есть код, как правило, очень короткий и понятный
  • Низкоуровневый, то есть вы имеете очень тонкий контроль над аппаратурой.

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

4
ответ дан 28 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: