Какие альтернативные методы ввода данных пользователем должны быть приняты в программировании?

std::move просто создает ссылку на значение из объекта и ничего более. Природа rvalue такова, что вы можете предположить, что никто не будет заботиться о его состоянии после того, как вы закончите с ним. std::move затем используется, чтобы позволить разработчикам давать обещания об объектах с другими категориями значений. Другими словами, вызов std::move в значимом контексте эквивалентен высказыванию «Я обещаю, что меня больше не волнует состояние этого объекта».

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

5
задан Jesse Pepper 14 January 2009 в 04:52
поделиться

7 ответов

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

Где много движений усилия UI находится в создании лучших инструментов. Например, можно просто использовать простого текстового редактора, чтобы сделать программирование, или у Вас могут быть полноценные IDE как Visual Studio или Eclipse. Кроме того, существует визуализация, и средства проектирования как Рациональный Повысились. Эти инструменты предлагают дополнительные способы исследовать и/или изменить базовый код.

2
ответ дан 14 December 2019 в 04:49
поделиться

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

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

Методы коммуникации

  • Речь
  • Язык тела
  • Жесты
  • Выражения лица
  • Язык жестов
  • Рисование/Рисунок
  • наборы, кнопки, ползунки, указание, перетаскивая (gui)

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

Методы создания функциональных вещей

  • Механизмы/пружины и другая механика
  • оригами/cutting/gluing
  • соединительные кабели
  • электронные схемы
  • стержни, шарикоподшипники, колеса
  • клапаны фонтанов и каналы
  • Машины Archimedes: шкивы, рычаги, винты
  • Lego

Еще один способ указать вычисление по определению.

Методы таблиц Definition - Constraints - Categorization - Set Theory - Properties - Symptoms - Logic - Правила - Железные дороги (как в схемах железной дороги)

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

проблемы с текущими языками

  • Интерфейс скрыт

  • API скрыты

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

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

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

  • компиляторы наказывают программиста сильно за малейшую ошибку.

  • Переменные испытывают недостаток в чувстве времени нет никакого способа запросить историю всех значений, на которые была установлена переменная в прошлом. Другими словами, у нас может быть язык программирования, где мы можем "перемотать" прогресс нашей программы? То, что переменная может измениться, часто к неожиданным значениям является другим источником ошибок. Это - другая половина проблемы побочных эффектов

  • большинство языков программирования имеет довольно крутую кривую обучения

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

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

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

4
ответ дан 14 December 2019 в 04:49
поделиться

Ожидать... Вам нужны больше, чем текстовый редактор и компилятор/компоновщик?

0
ответ дан 14 December 2019 в 04:49
поделиться

Хорошо целая цель некоторого символьного сценария действительно просто сводится к основанной на GUI разработке, которая является подчиненной Visual Studio, медленно флиртует с, но мы все еще на расстоянии в много лет от.

Создание некоторого символа, который представляет ДЛЯ цикла, не ускорило бы разработку. Если Вы хотите кодировать быстрее просто использование drag'n'drop блоки кода, которые уже поддерживает любой достойный IDE.

0
ответ дан 14 December 2019 в 04:49
поделиться

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

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

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

На предмет графического программирования: Я могу намного быстрее ввести слово "для" того, чем тянут что-то как треугольник с мышью. Это так, даже если этот рисунок "упрощен", позволив мне получить этот треугольник из некоторого меню. При программировании Вы используете сотни различных символов; как они могут быть организованы к доступу без ввода? Heh, я знаю, как насчет сочетаний клавиш... ожидают...

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

1
ответ дан 14 December 2019 в 04:49
поделиться

Было несколько попыток этого.

APL, который использовал выбор специальных символов для представления каждой операции. Это все еще существует в форме "J" языка, которые - ожидают его - заменил все символы два или трехбуквенные символьные комбинации ASCII.

IBMs Визуальный Возраст приблизительно 1998. Имел графический IDE, где Вы сделали вещи, любят, перетаскивают "сокет" значки к Вашему рабочему пространству и соединяют его с "потоковым" значком. Это просто генерировало C++, хотя, и, после начального g-свиста большинство программистов нашло "текстовую опцию" представления и придерживалось его.

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

Здесь существует две проблемы.

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

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

0
ответ дан 14 December 2019 в 04:49
поделиться

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

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

Возможно, методы визуализации AR могли помочь программистам, и аналитики видят и управляют изображением большего размера структуры кода или процессов, но откровенно много могло быть сделано с намного более стандартными методами UI и средствами управления, такими как таблицы, формы и меню, которые должны все же превратить его в мир кодирования. Последний язык программирования Gupta/Centura использовал древовидное управление, чтобы помочь видеть большие структуры кода. Intellisense является верной мыслью для запроса создания кода, но больше могло быть сделано, чтобы предоставить разработчику инструменты, чтобы понять и проанализировать код в более широких масштабах. Исходный код Roedy Green в Базе данных является хорошим началом (http://mindprod.com/project/scid.html), позволяя разработчику разумно запросить кодовую базу. Еще лучше было бы программирование UI, который продвигает анализ разработчика, делая явным, что разработчик должен рассмотреть для данного проектирования программы.

1
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

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