Вопрос

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

Короче говоря: как можно достичь максимальной ясности синтаксиса? Знать любой способ количественно оценить «ясность» или «выразительность» языка?

Имеет смысл попытаться измерить эти аспекты?

Спасибо.

Это было полезно?

Решение

Я слышал эту фразу слишком много раз небрежно брошенную на разных языках, а разные люди выберут разные языки на основе разных критериев.

В Красивый код, Юкихиро Мацумото (Дизайнер Ruby) делает спор о том, насколько проще написать программу Hello World в Ruby, чем в Java. Хотя я не думаю, что этот пример предназначен для масштабирования, точка автора состоит в том, что сумма Cruft, который вы должны добавить к вашему коду, отражает карандашность в понимании программы, написанной на этом языке. То есть тем меньше отвлекаемое, что вы получаете, тем больше «читаемая» программа.

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

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

Другие советы

Там были некоторые исследования в том, что называется «естественным программированием», которое может представлять для вас интерес:

http://www.cs.cmu.edu/~natprog/index.html.

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

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

http://blog.gmarceau.qc.ca/2009/05/speed-size-and-dependability-of.html.

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

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

(Примечание: мне нравится Ребо И я думаю, что у него есть возможность быть невероятно ясными и выразительными ... но только если вы используете его определенным образом, который включает в себя разработку диалектов DSL, как вы идете, что не так, как многие люди думают, когда они программируют. Все же!)

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

Некоторые люди любят язык с богатыми и лаконичными семантическими (например, Perl) и на самом деле не против использования символов, в то время как другие предпочитают синтаксис, напоминающий естественный язык, так что вы, кажется, говорят на компьютер (например, HyperCard) и «Действительно не возражаю в сословий или неоднозначность.

Таким образом, вопрос обычно приводит к педантическому ответу.

Языки похожи на инструменты.

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

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

Было бы в лучшем случае очень субъективная оценка, если может быть оценка языковой ясности и выразительности.

Как никогда, четкое указание - это богатство производства кода на этом языке. Некоторый язык, похожий на Brainfuck, не был принят во время Python, Ruby Etc приобрел популярность. Хотя эти и многие фактор могут быть только индикатором. Некоторый язык, несмотря на хорошие конструкции, могут не найти много внимания.

Эффект сети также влияет на усыновление языка.

Я нахожу Lolcode быть самым понятным языком из них все:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE

Измерение понимания языка не так важно, как измерение понимания программиста.

Вы также можете посмотреть на книгу «Концепции языков программирования» последней версией RW Sebesta. В этой книге есть глава (глава 1 или 2 я точно не помню) Обсудите критерии для оценки языка программирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top