Что полезно от преднамеренного и языкового программирования? - PullRequest
1 голос
/ 03 января 2009

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

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

(http://www.onboard.jetbrains.com/is1/articles/04/10/lop/, Что такое преднамеренное программирование )

Ответы [ 4 ]

4 голосов
/ 03 марта 2009

Термин "простой текст" заставляет меня хотеть встать здесь.

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

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

Простая мера этой прямоты обнаруживается, когда вы передумаете: насколько сложно изменить «код» без введения «ошибки»?

Взгляните на это.

ДОБАВЛЕНО: Только что посмотрев на материал Simonyi, возможно, я смогу высказать мнение о том, что в этом полезно.

С другой стороны, я не впечатлен акцентом на WYSIWYG и не-кодировщиках, способных создавать приложения. Люди любят пиксели, особенно цветные движущиеся пиксели, особенно если они в Калифорнии. Конечно, что-то можно сделать в игрушечных доменах, но как только вы решите вашу проблему, вы будете разочарованы. Это проблема ИИ, и к ней стоит стремиться. Нечестно утверждать, что он близок к достижению.

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

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

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

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

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

3 голосов
/ 03 января 2009

Одно очень полезное использование - сделать тестовые задания более понятными не только для бизнес-аналитика, но и для вас / вашей команды.

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

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

Рассмотрим этот вымышленный фрагмент.

ПРИМЕЧАНИЕ Дело не в том, что java является LOP, но есть некоторые фреймворки, целью которых является сделать что-то вроде следующего, то есть облегчить выполнение тестового примера.

package a;
import static a.Help.*;

public class Test { 

    public void test(){
        Object value = "";
        Object obtained = "";
        assert that( expected( value , isEqualTo( obtained ) ) );
    }
}

Это очень простой пример. Значение в этом коде - строка, которая выполняется, говорит, о чем весь тест:

            assert that( expected( value , isEqualTo( obtained ) ) );

Это очень ясно, оно гласит:

утверждают, что ожидаемое значение равно полученному

Ну, это очень просто. Но вы можете иметь любое бизнес-правило, просто прочитав его буквально.

утверждает, что ипотека клиента обрабатывается, когда она достигает ... и т. Д. И т. Д.

Мартин Фаулер объясняет это и упоминает Hamcrest фреймворк для этого.

Вот ссылка (я не совсем уверен, что здесь, где он говорит о Хэмкресте, или другой: P извините)

0 голосов
/ 07 марта 2009

Это просто будущее

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

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

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

С помощью mashup мы увидели творческих любителей, создающих невероятные сервисы, включая передачу данных, геосетевые сети и т. Д., При этом не имея 1/100000 бюджета Microsoft.

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

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

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

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

0 голосов
/ 03 января 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...