Подтвердить что ты не робот

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

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

Есть ли у него четко определенный смысл? Даже плохо определенный смысл?

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

Есть действительно только два значения, о которых беспокоят люди:

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

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

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

Ответ 7

Обычно существуют два разных значения:

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

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

Ответ 8

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

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

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

Ответ 9

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

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

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

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

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

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

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

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

Ответ 10

Я думаю, что, возможно, случайно, физическое определение мощности здесь имеет значение: "Скорость, с которой выполняется работа".

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

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

Ответ 11

Я рассматриваю термин как маркетинговый пух, ни один четко определенный смысл.

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

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

Ответ 12

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

Посмотрите, сколько может быть, и многое будет отсутствовать:

  • скорость выполнения
  • размер кода
  • выразительность
  • поддерживаемые парадигмы
  • время разработки/отладки
  • специализация домена
  • стандартные библиотеки
  • кодовая
  • инструментальная экосистема
  • портативность
  • сообщества
  • поддержка/документация
  • популярность
  • (добавьте еще здесь)

Эти и другие параметры объединяют представление X о том, как "программирование на каком-то языке" будет похоже на уровень X. Это будет только определение, однако, единственное реальное знание приходит с реальной практикой использования языка, но я отвлекаюсь.

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

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

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

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

Ответ 13

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

Приводит меня к мысли:

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

Ответ 14

Я думаю, что власть обычно относится к тому, как быстро он может обрабатывать данные, например, я обнаружил, что в python, как только список превышает длину ок. 2000 он становится невыносимо медленным, тогда как в С++ список может легко содержать 20 000 записей, не делая этого.