OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Пятница, 18 Июнь, 2010 19:13 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Илья Ермаков писал(а):
А чего у него может быть видимо-то особо, если всё ограничено небольшой процедурой и небольшим модулем, а обращение к другим модулям - только квалифицированное?


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 15:16 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Сергей Прохоренко писал(а):
...главное, для чего нужен построитель выражений, - это работа с большой стандартной библиотекой.

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

А конкретно, как Вы представляете себе действия по работе с выражениями.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 20:34 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Виктор О писал(а):
А конкретно, как Вы представляете себе действия по работе с выражениями.


Я уже об этом писал: http://office.microsoft.com/ru-ru/access-help/HA010254902.aspx
Это, конечно, не идеал, но хороший рабочий прототип.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2010 11:50 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
посмотрел построитель выражений.

такие вот мысли пришли.
1. Довольно старая разработка, в которой "построение выражения" - вещь в себе.
Поскольку в общем случае мы имеем не базу данных а данные общего вида, то нужно представление алгоритма и представление данных и работу с ними.
2. Важно не быстрее набрать. Сам по себе набор не столь важен как удобные инструменты работы со смыслом. Реализовываться эти инструменты должны, по-видимому, в мультирежимном интерфейсе, предоставляя возможности разбора с разных точек зрения.
3. Из хорошо известного это всякого рода всплывающие подсказки.
4. Но не только. Должен быть в частности режим всплывающих комментов.
5. Также должна быть возможность рассмотрения в разных аспектах, например, выборочное отображение в контексте некоторой переменной.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2010 12:27 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
В Студии для Додиеза и Васика сделаны так называемые сниппеты. Это в редакторе программист пишет начало конструкции, а система расширяет конструкцию до полной. И есть механизм, встроенный в студию, чтобы набор сниппетов расширять. То, что в Турбо-системах было сделано посредством 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 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
...сниппеты...


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 23 Июнь, 2010 12:23 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
сниппет (насколько я понял) - это шаг в сторону иероглификации языка программирования. Экономит нажатия... Мне это кажется неверным в плане самого процесса программирования.

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

Пока смутно, но как-то так.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 23 Июнь, 2010 13:31 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Виктор О писал(а):
сниппет (насколько я понял) - это шаг в сторону иероглификации языка программирования
Насколько я понял, сниппет - это всем здесь известный F5, который срабатывает автоматически, а не по команде пользователя.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 23 Июнь, 2010 17:12 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Да, конечно. Я хотел добавить, что в системе должны быть подобные средства постепенной автоматизации рутинных работ.
Снипеты - как пример. Но конечно, в традиционных системах это простые текстовые макросы, привязанные к клавишам... :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB