OberonCore https://forum.oberoncore.ru/ |
|
Фантастика как жанр проектирования https://forum.oberoncore.ru/viewtopic.php?f=93&t=2661 |
Страница 3 из 3 |
Автор: | Сергей Прохоренко [ Пятница, 18 Июнь, 2010 19:13 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Илья Ермаков писал(а): А чего у него может быть видимо-то особо, если всё ограничено небольшой процедурой и небольшим модулем, а обращение к другим модулям - только квалифицированное? Мне тоже непонятно, зачем нужна таблица видимости. Есть "панель элементов структуры" (табличный аналог области объявлений), в которой сведены все объявления переменных и иных объектов соответствующей функции или модуля. Есть браузер проекта, в котором можно найти любую переменную (или иной объект) проекта - в каком бы модуле она не объявлялась. При щелчке по переменной из другого модуля должен вставляться уточненный идентификатор - специфицированный именем модуля, а имя модуля автоматически вставляться в список импорта. А главное, для чего нужен построитель выражений, - это работа с большой стандартной библиотекой. |
Автор: | Виктор О [ Понедельник, 21 Июнь, 2010 15:16 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Сергей Прохоренко писал(а): ...главное, для чего нужен построитель выражений, - это работа с большой стандартной библиотекой. Ни в коем случае не хочу обидеть, просто напоминаю, что в отличие от темы "Семантический редактор" здесь хотелось бы видеть не принятые "решения", а изображение процесса программирования в некоей еще не существующей среде. А конкретно, как Вы представляете себе действия по работе с выражениями. |
Автор: | Сергей Прохоренко [ Понедельник, 21 Июнь, 2010 20:34 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Виктор О писал(а): А конкретно, как Вы представляете себе действия по работе с выражениями. Я уже об этом писал: http://office.microsoft.com/ru-ru/access-help/HA010254902.aspx Это, конечно, не идеал, но хороший рабочий прототип. |
Автор: | Виктор О [ Вторник, 22 Июнь, 2010 11:50 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
посмотрел построитель выражений. такие вот мысли пришли. 1. Довольно старая разработка, в которой "построение выражения" - вещь в себе. Поскольку в общем случае мы имеем не базу данных а данные общего вида, то нужно представление алгоритма и представление данных и работу с ними. 2. Важно не быстрее набрать. Сам по себе набор не столь важен как удобные инструменты работы со смыслом. Реализовываться эти инструменты должны, по-видимому, в мультирежимном интерфейсе, предоставляя возможности разбора с разных точек зрения. 3. Из хорошо известного это всякого рода всплывающие подсказки. 4. Но не только. Должен быть в частности режим всплывающих комментов. 5. Также должна быть возможность рассмотрения в разных аспектах, например, выборочное отображение в контексте некоторой переменной. Впрочем, некоторая часть идей выходит за пределы темы, изложу отдельно. |
Автор: | Валерий Лаптев [ Вторник, 22 Июнь, 2010 12:27 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
В Студии для Додиеза и Васика сделаны так называемые сниппеты. Это в редакторе программист пишет начало конструкции, а система расширяет конструкцию до полной. И есть механизм, встроенный в студию, чтобы набор сниппетов расширять. То, что в Турбо-системах было сделано посредством temc - макросный механизм. А для С++ такого нет. Или сложно делать. И вот я одному второгодку задал сделать. Он покопался, нашел в инете прогу, посредством которой эти сниппеты можно для С++ к студии прикрутить. Набор сниппетов: Код: #include<iostream> Каждая строчка - отденьный сниппет#include<ctime> #include<string> #include<cstring> #include <cwchar> #include<stdexcept> #include<fstream> #include<sstream> #include<cmath> #include<iomanip> #include <algorithm> #include<vector> #include <deque > #include <functional> #include <iterator> #include <list > #include <map> #include <memory > #include <numeric > #include <queue> #include <set> #include <stack> #include <utility> using namespace std; А тут - наиболее часто набираемые нашими студиозами вещи Код: int main() { system("pause"); return 0; } Код: setlocale (LC_ALL, "rus"); Код: srand((unsigned)time(NULL)); А тут - каждый оператор - отдельный сниппет Код: if ($value$) { } if ($value$) { } else { } switch ($name$) { case 1: break; } switch ($name$) { case 1: break; default: break; } while ($value$) { } do { } while ($value$) Еще классы: Код: class $name$ { } struct $name$ { } class $name$ { private: // поля public: // функции $name$(){} // конструктор по умолчанию $name$( ) // конструктор инициализации { } $name$(const $name$ &b) // конструктор копирования { } ~$name$(){} // деструктор } class $name$ { private: // поля public: // функции $name$( ) // конструктор инициализации { } } Ввод-вывод: Код: ifstream in("input.txt"); if(in) { } in.close(); ofstream out("output.txt"); if(out) { } out.close(); ifstream in("input.bin", ios::binary); if(in) { } in.close(); ofstream out("output.bin", ios::binary); if(out) { } out.close(); $out$.write( $char$, strlen ($char$) ); $in$.read(%$char$, 1); ofstream out("output.bin", ios::binary|ios::app); if(out) { } out.close(); void copyfile(ifstream &in, ofstream &out) { out<< in.rdbuf(); } Еще из стандартной библиотеки ряд снипетов: Код: vector<$type$> $name$;
vector<$type$>::iterator $name$; $name$.push_back(); $name$.pop_back(); $name$.begin(); $name$.end(); list<$type$> $name$; list <$type$>::iterator $name$; $name$.front(); $name$.back(); accumulate( $name$.begin(), $name$.end(), 0); for_each($name$.begin(), $name$.end(), $function$) copy($namein$.begin(), $namein$.end(), $nameout$.begin()) copy_backward($namein$.begin(), $namein$.end(), $nameout$.begin()) fill( $name$.begin(), $name$.end(), $value$); generate( $name$.begin(), $name$.end(), $function$) swap ( $name1$, $name2$ ) sort( $name$.begin(), $name$.end()); adjacend_find( $name$.begin(), $name$.end()); mismatch($name1$.begin(), $name1$.end(), $name2$.begin()) random_shuffle( $name$.begin(), $name$.end()); binary_search( $name$.begin(), $name$.end(), $value$); lexicographical_compare($name1$.begin(), $name1$.end(), $name2$.begin()) min_element ( $name$.begin(), $name$.end()); max_element ( $name$.begin(), $name$.end()); next_permutation ( $name$.begin(), $name$.end()); prev_permutation ( $name$.begin(), $name$.end()); set_intersection ($name1$.begin(), $name1$.end(), $name2$.begin(), $name2$.end(), $nameout$.begin()) set_difference($name1$.begin(), $name1$.end(), $name2$.begin(), $name2$.end(), $nameout$.begin()) set_symmetric_difference($name1$.begin(), $name1$.end(), $name2$.begin(), $name2$.end(), $nameout$.begin()) set_union($name1$.begin(), $name1$.end(), $name2$.begin(), $name2$.end(), $nameout$.begin()) |
Автор: | Сергей Прохоренко [ Вторник, 22 Июнь, 2010 14:18 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Валерий Лаптев писал(а): ...сниппеты... Вещь хорошая (шаг в сторону семантического редактора), но чувствуется заточка под чисто текстовое представление программного кода. Не выбор из коллекции, а ввод начала сниппета с клавиатуры. Не хватает гипертекстовых возможностей. Например, было бы неплохо, если бы непосредственно в гипертексте появлялись кнопочки, позволяющие одним щелчком удалять или добавлять ветви многоветочных конструкций (чтобы уменьшить разнообразие вариантов таких конструкций) и прочие опциональные элементы. Наверняка сниппеты имеют цветную подсветку "заглушек", просто ее тут на форуме не изобразить. |
Автор: | Виктор О [ Среда, 23 Июнь, 2010 12:23 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
сниппет (насколько я понял) - это шаг в сторону иероглификации языка программирования. Экономит нажатия... Мне это кажется неверным в плане самого процесса программирования. Процесс должен производиться путем последовательной декомпозиции и уточнения шагов решения задачи с целью сведения к готовым подзадачам из библиотеки алгоритмов. В идеале у нас вообще не должно быть доведения детализации до уровня переменных встроенных типов данных в алгоритме. они должны присутствовать только в описании, декларациях и вызовах. Пока смутно, но как-то так. |
Автор: | Евгений Темиргалеев [ Среда, 23 Июнь, 2010 13:31 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Виктор О писал(а): сниппет (насколько я понял) - это шаг в сторону иероглификации языка программирования Насколько я понял, сниппет - это всем здесь известный F5, который срабатывает автоматически, а не по команде пользователя.
|
Автор: | Валерий Лаптев [ Среда, 23 Июнь, 2010 17:12 ] |
Заголовок сообщения: | Re: Фантастика как жанр проектирования |
Да, конечно. Я хотел добавить, что в системе должны быть подобные средства постепенной автоматизации рутинных работ. Снипеты - как пример. Но конечно, в традиционных системах это простые текстовые макросы, привязанные к клавишам... |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |