2009-08-29 3 views
7

Какие функции могут быть добавлены к новому языку программирования , чтобы сделать его более «интуитивным»? Когда дело доходит до веб-сайтов и настольных компьютеров, мы предпочитаем удобство использования, почти интуитивно понятный удобство использования. Становится все более ожидаемым, что ваше приложение должно «просто работать». Для определенного класса приложений идея о том, что она имеет значение RTFM, представляет собой знак против эффективности приложения. Люди склонны к ожидать, что приложение будет работать так, как они «думают» должно работать. Можно утверждать, что это достойный стандарт , к которому должны стремиться дизайнеры.Должны ли языки программирования быть интуитивными?

Может ли такая же строгость юзабилити применяться к языкам программирования и среды разработчиков? Я понимаю, что есть такие инструменты, как IntelliSense, которые предоставляют подсказки, а хорошая IDE предоставляет вам вспомогательную помощь . Но как насчет основного языка? Что может быть добавлено (или удалено) , что делает определенные программирования или алгоритмы более очевидными для программирования? ? Как сделать сделать регулярные выражения или рекурсию более интуитивно понятными? Или это просто глупость?

Возьмите более конкретный пример: жидкие макеты в HTML, CSS, или Flex и MXML. В HTML и CSS модель окна - это что-то , но интуитивно понятное, учитывая различные реализации Internet Explorer и других браузеров. И если кто-то не читает документацию или не изучает концепцию коробки , было бы сложно «просто получить ее» при разработке макета на свой первый удар в CSS. Я бы сказал, что это , почему таблицы процветали в первые дни. Модель коробки была , неявной в концепции ячейки таблицы. С помощью таких инструментов, как Dreamweaver, можно было разглядеть вокруг процентные ширины и макет внутри ограничений . Затем CSS пришел в зрелость, и появился целый ряд допустимых причин: причин, почему таблицы не для макета. Но до добиться того же эффекта разработчики должны были действительно изучить реализаций CSS и модель коробки, а также ввести новый слой абстракции в их мышление.

В другом примере, я считаю, при программировании много вещей в ActionScript и MXML, вся концепция жидкости макетов и процент на основе ширины элементов не очень очевидных и не всегда следовать интуиции. Я понимаю основную проблему в том, что Adobe Flash player и макет нужен , чтобы понимать вещи в абсолютных пиксельных условиях. Когда он приходит к потенциальной ширине компонента, я понимаю, почему проценты не сразу очевидны для реализации на уровне ядра . Теоретически говоря, Flash Игрок должен знать (или рассчитать) точную ширину компонента , чтобы он мог обеспечить правильную геометрию видеокарты при рисовании на экране. Но когда вы вводите понятие процента, вы вводите теоретическую возможность бесконечной ширины . И найти «бесконечность - 1» пикселей - это не то, что компьютер может непосредственно обойтись без некоторого слоя абстракции и вычисления . На видовом экране должны быть указаны ссылки.Программа должна знать свои границы. Таким образом, абсолютная ширина - это норма, , хотя люди могут предпочесть дизайн с точки зрения процентов.

Когда речь заходит о языках программирования, могут быть выражения и функции, которые помогают интуиции, когда думают о задаче программирования. Или нам лучше «думать» как компьютер »и просто RTFM'ing руководство, когда нам нужно , чтобы понять, как реализовать какую-либо функцию или макет в коде ?

Если бы вы могли изменить синтаксис или семантику своего выбранного языка программирования , что бы вы добавили, измените, или удалите, чтобы улучшить его «интуитивность»?

Добавление, причина задать этот вопрос вдохновлен увидеть пример того, что «новички» смогли достичь в Smalltalk в Alan Kay's lecture: Doing with Images Makes Symbols.

+1

На стороне примечание, это, вероятно, субъективный разговор и должно быть отмечено «wiki сообщества» – Randolpho

ответ

8

«Если бы вы могли изменить синтаксис или семантика языка программирования выбора, что бы вы добавить, изменить или удалить, чтобы улучшить„интуитивность“его? »

Программирование трудно. Действительно трудно. Изменения синтаксиса не имеют большого значения. IDE не имеют отношения к фундаментальной проблеме программирования.

Вещь, которая часто бывает озадачивающей, - это семантика языка.

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

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

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

Я знаю это: элегантная простота важна. Ортогональность особенностей. Ясность. Точность. Отсутствие исключений или особых случаев. Прежде всего, простота.

Укладка на языковые функции в корне плоха.

Покрытие языковых проблем путем расслоения в сложной среде IDE хуже.


См http://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD854.html

«, столкнувшись с чем-то новым и незнакомым мы пытаемся связать его с тем, что мы знакомы. В ходе этого процесса мы придумываем аналогии, которые позволяют нам сделать это.

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

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


Bottom Line.

сложность присуща.

у вас есть два варианта.

  1. Разработка интеллектуальных инструментов (т. Е. Абстракции, суммирование и т. Д.), Чтобы справиться с этим.

  2. Получите работу в другом поле.

Просить, чтобы сложный мир вычислений превращался во что-то, что любой человек считает «интуитивным» не может случиться. Вычислить слишком сложно, чтобы быть «интуитивным».

+1

Думаю, я согласен. Вот почему я также спросил, что можно «удалить», а также добавить. И вы правы в том, что интуиция слишком размыта в концепции мира бинарной логики и программирования. Но как добиться этой простоты? Конечно, мы не ожидаем, что все будут программистами на сборке. Хотя, возможно, важно понимать сборку, чтобы понять реализацию более высокого уровня. Как это сделать, чтобы программирование очистило сознание багажа и предположения, которые затрудняют его? –

+1

Ассемблер не является «простым». Действительно, он часто слишком сложный из-за странных аппаратных особых случаев и неортогональности. Некоторые языки (например, Python) довольно просты и легки в управлении. Программирование не имеет багажа - это просто так. Если ваш разум имеет багаж, это ваша проблема, чтобы оставить багаж позади. В самом деле, это ваше * обязательство *: прийти к технологии со свежим, пустым умом, без предубеждений. –

+1

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

3

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

+1

@Randolpho, спасибо за ссылку на Fluent API. Интересный материал. Вот почему я задаю несколько широких вопросов, потому что получаю интересные ответы, подобные вашим, которые помогают мне учиться. Спасибо за ответ. –

5

Другое поле, которое я видел, относится к сложности «синтаксиса» языков программирования: Visual Programming Languages. Основная идея VPL состоит в том, чтобы взять конструкции языков программирования (решения, подпрограммы, функции и т. Д.) И представить их графически, как правило, в виде диаграммы потока данных. Один из таких языков, который набирает популярность в последнее время, - Microsoft Visual Programming Language. Я не использовал его и не могу заявлять о его силе, но я использовал LabView, и могу сказать, что вы можете делать практически все, что вы можете придумать даже в LabView, - но у вас есть do подумайте об этом совсем по-другому.

Это, я считаю, у меня есть личный предпочтение для кода, а не для VPL.

+0

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