Платформа для создания визуального языка программирования

Я интересуюсь созданием визуального языка программирования, который может помочь непрограммистам (как дети) писать простые программы, во многом как Labview, или Simulink позволяет инженерам соединять функциональные блоки вместе без ведома того, как они внутренне создаются. Это называет, программируя демонстрация? Что такое примеры приложений? Что было бы идеальной платформой, которая может позволить мне делать это (это может быть рабочий стол или веб-приложение),

11
задан iceman 20 February 2010 в 12:59
поделиться

3 ответа

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

Вы можете написать профессору Бернетту за советом. Если вы это сделаете, я надеюсь, что вы сообщите о результатах здесь.

4
ответ дан 3 December 2019 в 05:34
поделиться

Во-первых, каждое хранилище NoSQL отличается друг от друга. Так что это не похоже на выбор между Oracle или SQL Server или MySQL. Различия между ними могут быть огромными.

Например, с помощью CouchDB нельзя выполнять динамические запросы (если хотите). Он очень хорош в онлайн - автономных сценариях и достаточно мал, чтобы работать на большинстве устройств. Он имеет интерфейс RESTful, поэтому ни драйверов, ни ADO.NET библиотек. Чтобы запросить его, используйте MapReduce (теперь это очень распространено в пространстве NoSQL, но не повсеместно) для создания представлений, которые написаны на нескольких языках, хотя большая часть документации предназначена для Javascript. CouchDB также разработан для сбоя, что означает, что если что-то идет не так, он просто перезапускает процесс (процесс Erlang или группа связанных процессов, то есть, как правило, не весь экземпляр CouchDB).

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

Теперь обе эти базы данных являются базами данных документов, и поэтому они совместно используют неструктурированные данные. Нет ни таблиц, ни определенной схемы - они не являются схемами. Однако они не похожи на хранилище ключевых значений, поскольку они настаивают на том, что данные, которые вы сохраняете, понятны для них. С CouchDB это означает использование JSON, а с MongoDB - использование BSON.

Есть много других различий между MongoDB и CouchDB, и они считаются в пространстве NoSQL очень близкими по своему дизайну!

Кроме баз данных документов, они представляют собой сетевые решения, такие как Neo4J, хранилища столбцов (ориентированные на столбцы, а не на строки в том, как они сохраняют данные) и многие другие.

Что-то, что часто встречается в большинстве решений NoSQL, кроме MapReduce, заключается в том, что они не являются реляционными базами данных и что большинство не используют синтаксис стиля SQL. Типично запрос следует императивному режиму программирования, а не декларативному стилю SQL.

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

Мой совет любому, кто хочет использовать решение NoSQL, состоит в том, чтобы сначала действительно понять требования, которые у них есть, понять соглашения об уровне обслуживания (какой уровень задержки требуется; насколько последовательными должны оставаться эти задержки по мере масштабирования решений; какой масштаб нагрузки предполагается; является ли нагрузка согласованной или будет ли она резко возрастать; насколько согласованным должно быть представление пользователей о данных, если они всегда видят свои собственные записи при запросе, если их записи немедленно видны всем другим пользователям; и т.д.). Поймите, что вы не можете иметь все это, прочитайте на Brewers CAP theorum, который в основном говорит, что вы не можете иметь абсолютную консистенцию, 100% доступность и быть терпимым к разделениям (справиться, когда узлы не могут взаимодействовать). Затем изучите различные решения NoSQL и начните устранять те из них, которые не соответствуют вашим требованиям, поймите, что переход из реляционной базы данных не является тривиальным и имеет связанные с ним затраты (я нашел стоимость перемещения организации в этом направлении, с точки зрения встреч, обсуждений и т.д. сама по себе очень высока, предотвращая сосредоточение внимания на других областях потенциальной выгоды). Большую часть времени вам не понадобится ORM (R часть этого уравнения просто пропала), иногда просто двоичная сериализация может быть в порядке (с чем-то вроде DB4O например, или хранилища ключевых значений), вещи, такие как библиотека Newtonsoft JSON/BSON может помочь, как может автопроизводитель. Я нахожу, что работа с C # 3 является определенной стоимостью по сравнению с работой с динамическим языком, как, скажем, Python. С C # 4 это может немного улучшиться с такими вещами, как ExpandoObject и Dynamic из DLR.

Чтобы посмотреть на ваши 3 конкретных вопроса, со всем, что зависит от решения NoSQL, которое вы принимаете, так что ни один ответ не возможен, однако с этой оговоркой, в очень общих терминах:

  1. Если сохраняется объект (или агрегат более вероятно) в целом, ваши соединения, как правило, будут в коде, хотя вы можете сделать некоторые из этого через MapReduce.

  2. Опять же, это зависит, но с помощью Couch можно выполнить GET по HTTP для определенного ресурса или для представления MapReduce.

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

Надеюсь, это поможет, удачи!

-121--1580220-

С помощью < input type = "file" > пользователь может просматривать только файлы на своем компьютере. У него нет возможности видеть папки на сервере, если вы не дадите ему список или структуру дерева, чтобы он мог выбрать. Вот пример построения такого вида.

-121--4012927-

Существует Scratch, написанный MIT, который во многом похож на то, что вы ищете.

http://scratch.mit.edu /

3
ответ дан 3 December 2019 в 05:34
поделиться

fieldset {дисплей: inline} или fieldset {дисплей: inline-block}

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

-121--866742-
 CGRect rect = CGRectMake (10, 10, 200, 100);
[object performSelector: frameSel useObject: rect];

Но это не компилирует

Правильно, потому что rect является структурой, а не указателем на объект.

 CGRect rect = CGRectMake (10, 10, 200, 100);
NSValue * value = [NSValue
[object performSelector: frameSel weyObject: value];

На самом деле, это компилируется, но при отладке кадр устанавливается неправильно:

 po object
< UILabel: 0x39220f0; кадр = (0 0; 200 100); text = «reflureLabel»; clipsToBounds = YES; userInteracityEnabled = НЕТ; слой = < CALayer: 0x3922240 > >

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

В любом случае, почему вы используете performSelector: wityObject: ? Вы не адресуете его к определенному потоку и не откладываете его; почему бы просто не сказать object.frame = rect ?

-121--4779945-

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

0
ответ дан 3 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

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