Re[9]: О специализированных операторах ввода-вывода
От: WolfHound  
Дата: 21.12.16 15:03
Оценка: +1
Здравствуйте, кт, Вы писали:

кт>в библиотеке выполнения известен адрес. А то, что я хотел вывести именно как X, а не как Y довольно сложно определить, поскольку имеется только содержимое указателя P.

кт>А здесь никаких заморочек не надо — внутри программы автоматически запишется "X=" и дело с концом.
Прочитай статью три раза внимательно. После этого поймёшь, что возможности PL/1 по сравнению с немерле просто несравнимы.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: О специализированных операторах ввода-вывода
От: кт  
Дата: 21.12.16 17:37
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Стандарт языка не требует разве?

P>Вот найдется вдруг какая-нибудь ценная программа, которая 40 лет на ленте пролежала и которую срочно надо запустить. А в ней такое:
P>
P>OPEN FILE(STATE_FILE) KEYED ENVIRONMENT(INDEXED);
P>

P>Ну и дальше, что там требуется от индекса.
P>И что будет?

P>Как ни странно, файловые хранилища распространены достаточно широко.


В стандарте подмножества "G" — индекс у файлов может быть только целое неотрицательное число.
Re[10]: О специализированных операторах ввода-вывода
От: кт  
Дата: 21.12.16 17:49
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Прочитай статью три раза внимательно. После этого поймёшь, что возможности PL/1 по сравнению с немерле просто несравнимы.


так как в Немерле получить текст вывода "x=1280 y=1024" если x,y — целые?
У автора достаточно строки put data(x,y);
а в Немерле как будет выглядеть аналогичная строка?
Re[11]: О специализированных операторах ввода-вывода
От: WolfHound  
Дата: 21.12.16 18:26
Оценка:
Здравствуйте, кт, Вы писали:

кт>так как в Немерле получить текст вывода "x=1280 y=1024" если x,y — целые?

кт>У автора достаточно строки put data(x,y);
кт>а в Немерле как будет выглядеть аналогичная строка?
Вот прямо так и будет. Нужно только библиотеку написать.
тест
using System.Console;
using PL1.Macro;

module Program
{
  Main() : void
  {
    def x = 1280;
    def y = 1024;
    put data(x, y);
    put data(x, y, x + y, x.ToString() + "asd");
    _ = ReadLine();
  }
}

результат:
x=1280 y=1024
x=1280 y=1024 x + y=2304 x.ToString() + "asd"=1280asd

библиотека:
using Nemerle;
using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;

using System.Collections.Generic;
using System.Linq;

namespace PL1.Macro
{
  public macro PutData(args)
  syntax ("put", "data", args)
  {
    PutDataImpl.Impl(args)
  }

  module PutDataImpl
  {
    public Impl(args : PExpr) : PExpr
    {
      match (args)
      {
        | PExpr.Tuple as args =>
          def code = List();
          foreach (arg in args.args)
          {
            code.Add(<[ $(arg.ToString()) ]>);
            code.Add(<[ "=" ]>);
            code.Add(arg);
            code.Add(<[ " " ]>);
          }
          code.RemoveAt(code.Count - 1);
          def code = code.Aggregate((a1, a2) => <[ $a1 + $a2 ]>);
          <[ System.Console.WriteLine($(code)) ]>
        | _ => PExpr.Error(args.Location, "Tuple expected.")
      }
    }
  }
}

декомпилированный код
// Program
private static void Main()
{
    int x = 1280;
    int y = 1024;
    Console.WriteLine("x=" + x.ToString() + " " + "y" + "=" + y.ToString());
    Console.WriteLine("x=" + x.ToString() + " " + "y" + "=" + y.ToString() + " " + "x + y" + "=" + (checked(x + y)).ToString() + " " + "x.ToString() + \"asd\"" + "=" + (x.ToString() + "asd"));
    Console.ReadLine();
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: О специализированных операторах ввода-вывода
От: vdimas Россия  
Дата: 21.12.16 19:14
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Автор статьи пишет, что иногда нужно анализировать данные на распечатке. Мне такую ситуацию пердставить сложно. В 2016 году анализировать лог на бумаге просто неудобно.


Порой очень удобно. Помечать, стрелки рисовать, кружочки. ))
Любая высокоскоростная динамика отлаживается только по логам.


P>Поиск по ним не сделаешь. А современные логи — штука весьма объемная.


Фильтрацию зато сделаешь. А результат распечатаешь.
Re[7]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 21.12.16 19:37
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Порой очень удобно. Помечать, стрелки рисовать, кружочки. ))

V>Любая высокоскоростная динамика отлаживается только по логам.

Ни разу не приходилось. Вот фрагменты исходников печатал. И в них рисовал кружочки и стрелочки. Иногда в распечатках можно заметить то, что не видно в IDE.

V>Фильтрацию зато сделаешь. А результат распечатаешь.


В прошлом проекте у нам внедрили неплохую систему работы с логами. Там все операции проводились, как с нормальной БД: фильтрция, поиск по массе критериев. Печатать не нужно было ничего.
Re[11]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 21.12.16 19:38
Оценка:
Здравствуйте, кт, Вы писали:

кт>В стандарте подмножества "G" — индекс у файлов может быть только целое неотрицательное число.


Если мы предмет обсуждения подменяем описанием его свойств, значит, он реализован?
Re[2]: О специализированных операторах ввода-вывода
От: кт  
Дата: 21.12.16 19:40
Оценка:
Здравствуйте, pestis, Вы писали:

P>Мужик отстал от паровоза лет на 20, по ходу он про монаду I/O даже и не подозревает.

Точно! и эти, как их... ленивые вычисления не применил. А уж без привлечения монад отладочная печать с именами — все равно как пиво без водки, кино без Гоши Куценко и кучка дерьма без горки!
Re[12]: О специализированных операторах ввода-вывода
От: кт  
Дата: 22.12.16 03:02
Оценка:
ОК. Но есть нюанс.
PUT DATA — в примере для простоты. А вообще-то это оператор вывода PUT.
Поэтому реальная форма будет чуть посложнее, например PUT FILE(F21) SKIP(2) DATA(x,y);
Т.е. может быть еще имя файла, число пропусков строк (в произвольном порядке).
Так что и библиотека будет чуть посложнее.
А так все правильно. Но ведь и в статье это названо мелочью. Кстати, а как насчет вывода не скаляров?
Т.е. а остальные примеры из статьи?
Re[12]: О специализированных операторах ввода-вывода
От: кт  
Дата: 22.12.16 05:48
Оценка:
Здравствуйте, Privalov, Вы писали:


P>Если мы предмет обсуждения подменяем описанием его свойств, значит, он реализован?

Может я в тему не врубаюсь?
Вот пример примитивной "базы данных", допустимый в стандарте "G":

declare
1 карточка,
2(имя,
отчество,
фамилия) char(30) var,
2 возраст fixed(7),
2 дурак_ли_выпить bit,

бд file,
номер_карточки fixed(31);

open file(бд) update record direct keyed title('любители_выпить.dat');

имя ='Иван';
отчество ='Иванович';
фамилия ='Иванов';
возраст =50;
дурак_ли_выпить=нет;

номер_карточки=5_000_000;
write file(бд) from(карточка) key(номер_карточки);
...
read file(бд) into(карточка) key(номер_карточки);
возраст+=1;
дурак_ли_выпить=да;
put skip data(карточка);
...

Или вопрос был не на эту тему?
Re[13]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 22.12.16 06:19
Оценка:
Здравствуйте, кт, Вы писали:

P>>Если мы предмет обсуждения подменяем описанием его свойств, значит, он реализован?

кт>Может я в тему не врубаюсь?
кт>Или вопрос был не на эту тему?

Я просто спросил, реализован ли ISAM в этой версии PL/1. Вместо ISAM я мог бы написать BDAM, суть от этого не поменялась бы. Просто -есть или нет? Ответ на этот вопрос не должен вызывать затруднений. Просто — да или нет.
Re[14]: О специализированных операторах ввода-вывода
От: кт  
Дата: 22.12.16 07:13
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Я просто спросил, реализован ли ISAM в этой версии PL/1. Вместо ISAM я мог бы написать BDAM, суть от этого не поменялась бы. Просто -есть или нет? Ответ на этот вопрос не должен вызывать затруднений. Просто — да или нет.


Грибных лесов в Европе нет (с). Индексно-последовательных файлов в смысле IBM360 с их регионами и сблокированными записями в стандарте "G" нет.
Re[15]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 22.12.16 07:34
Оценка:
Здравствуйте, кт, Вы писали:

кт>Грибных лесов в Европе нет (с). Индексно-последовательных файлов в смысле IBM360 с их регионами и сблокированными записями в стандарте "G" нет.


Примерно такой ответ я себе и представлял. С просто "да или нет" — проблемы.

Такой стандарт нам не нужен (почти ©)
ISAM — не нужен?
Спорно. Он до сих пор используется. Btrieve, например.

Без PUT DATA прекрасно обходятся все и везде. Из PL/1 он не перешел ни в один язык. Значит, не нужен.
Re[2]: О специализированных операторах ввода-вывода
От: pagid Россия  
Дата: 22.12.16 07:47
Оценка:
Здравствуйте, pestis, Вы писали:

P>Мужик отстал от паровоза лет на 20, по ходу он про монаду I/O даже и не подозревает.

Отстал-то он похоже лет на 40. Но к чему монады
Re[3]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 22.12.16 08:01
Оценка:
Здравствуйте, pagid, Вы писали:

P>>Мужик отстал от паровоза лет на 20, по ходу он про монаду I/O даже и не подозревает.

P>Отстал-то он похоже лет на 40. Но к чему монады

Не все приняли тот факт, что еще в 80-е PL/1 был вытеснен Фортраном и Коболом.
Re[4]: О специализированных операторах ввода-вывода
От: pagid Россия  
Дата: 22.12.16 08:08
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Не все приняли тот факт, что еще в 80-е PL/1 был вытеснен Фортраном и Коболом.

Хотя в в 60-е PL/1 создавался для замены Фортрана и Кобола
Re[5]: О специализированных операторах ввода-вывода
От: Privalov  
Дата: 22.12.16 08:14
Оценка:
Здравствуйте, pagid, Вы писали:

P>Хотя в в 60-е PL/1 создавался для замены Фортрана и Кобола


И Алгола-60. Но Алгол как-то незаметно канул в вечность.
Re[13]: О специализированных операторах ввода-вывода
От: WolfHound  
Дата: 22.12.16 09:52
Оценка:
Здравствуйте, кт, Вы писали:

кт>ОК. Но есть нюанс.

Нет никаких нюансов.

кт>А так все правильно. Но ведь и в статье это названо мелочью.

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

кт>Кстати, а как насчет вывода не скаляров?

https://github.com/rsdn/nemerle/wiki/Macros-tutorial
Прочитай внимательно. Там есть код, который решает почти идентичную задачу.

кт>Т.е. а остальные примеры из статьи?

Это тебе в качестве домашнего задания.
Если хочешь, чтобы я с тобой дальше разговаривал тебе придётся продемонстрировать что ты хочешь узнать что-то новое, а не тупо защищаешь статью.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: О специализированных операторах ввода-вывода
От: кт  
Дата: 22.12.16 10:47
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Нет никаких нюансов.

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

WH>Вся статья детский сад штаны на лямке.

WH>Там нет ничего что не может сделать толковый школьник на немерле за вечер.
WH>И на научную статью она вообще никак не тянет. Максимум пост в бложике.
так редакция ее и не напечатала. А толковый школьник может сделать и не в Немерле, а еще как-нибудь.

WH>https://github.com/rsdn/nemerle/wiki/Macros-tutorial

WH>Прочитай внимательно. Там есть код, который решает почти идентичную задачу.
почти да не совсем

WH>Это тебе в качестве домашнего задания.

Спасибо, не надо, я не работаю с Немерле, а в PL/1 уже есть готовое.

WH>Если хочешь, чтобы я с тобой дальше разговаривал тебе придётся продемонстрировать что ты хочешь узнать что-то новое, а не тупо защищаешь статью.

Я вообще-то просто обещал человеку выложить все его старые тексты (это последний), а не с кем-то разговаривать. И то лишь потому, что редакция почти по-хамски ничего ему не отвечала больше года.
Среди текстов есть и слабые, точнее мелкие вроде этого. И, не скрою, пытался защищать "честь предприятия".
А нового чего узнать в данном случае? Что можно достать имя переменной в строку? Да пожалуйста. Для этого три раза статью читать не требуется
Re: О специализированных операторах ввода-вывода
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.12.16 00:26
Оценка:
Здравствуйте, кт, Вы писали:

кт>Сама статья, написана почти два года назад:

кт>http://files.rsdn.org/122727/pl1ex19.doc

Это... Ты ее преобразуй в RSDN ML (с помощью шаблона для верстки
Автор(ы): Брусенцев Виталий, Чистяков Владислав Юрьевич
Дата: 22.06.2011
Статья описывает шаблон для Microsoft Word предназначенный для верстки статей и преобразования их в формат RSDN ML. В статье рассматриваются вопросы использования шаблона.
) и кинь сюда ссылку, а я ее выложу как следует.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.