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/