166
Общий раздел / Re: Неименованные функции в обероне
« : Январь 23, 2012, 12:53:12 pm »
>REFERENCE TO PROCEDURE
Можно ли обойтись без подобных конструкций?
Можно ли обойтись без подобных конструкций?
Онлайн компилятор Oberon-07/11
Путеводитель по Оберон-проектам.
Логи jabber-конференции.
Онлайн исходники BlackBox: тут:WeBB и на github
Исходники Project Oberon V4 на github.
Сборник решений задач книги "Современное программирование с нуля!" тут. А обсуждение здесь.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
Честно признаюсь, что не вижу ни квадратных скобок, ни того, о каких недостатках идет речь. Напишите поподробней.Прошу прощения, фигурных, конечно же. Недостатки - излишество скобок по сравнению с обероновской конструкцией if.....end
if........then
............
else......
end if;
В исходном примере - переменные передаваемые в подпрограммы были помечены служебным словом var, в "улучшенных" - нет - это не одно и тоже. Разумеется, можно без пометки в ряде случаев обойтись - например, используя глобальные переменные, но это "рецепт" в чем- то аналогичен предложению Алексея , по замене операторных скобок.
Max(a, b: int): int;
a, b: int - это в точности: VAR a, b: INTEGER
Вот хороший пример того , к чему приводит бездумное фичевание... помимо бегинов под нож попали и var ы- и как по - вашему бедному проггеру помечать выходные переменные? или они не планируются ж)?
Max(a, b: int): int;
Result: int;
if a > b then Result := a else Result := b end if;
return Result;
end Max;
Можно подробней, что не так с выходными переменными?
PROCEDURE Max(VAR: a, b: INTEGER): INTEGER;
VAR
Result: INTEGER;
BEGIN
IF a > b THEN
Result := a;
ELSE
Result := b;
END;
RETURN Result;
END Max;
Убираем RETURN, PROCEDURE, BEGIN, THENMax(a, b: INTEGER): INTEGER;
IF (a > b)
Max := a;
ELSE
Max := b;
END;
Max;
Убрать PROCEDURE - идея интересная.Max(a, b: int): int;
Result: int;
if a > b then Result := a else Result := b
end if;
return Result;
end Max;
Че ж сразу серверное? Я вот клиентское хочу. Жабаскрипт задолбал.Ну, давайте все веб направление возьмем: клиентское+серверное
Вообще то компилятор никакого отношения к гую не имеет. Одно с другим не связано никак.Не нужны гуевые библиотеки, ide
Может более перспективным (с точки зрения полезности обсуждния) будет проектировать язык исходя из области его использования? Скажем с Оберонами возможен такой план:Хорошая идея. В соответствии с этим подходом, предлагаю обсудить вебпрограммирование(серверные приложения - к примеру, движек динамического сайта - социалка, портал, форум, магазин и т.д.), как область оптимального использования. В КП уже сделан в этом направлении шаг - добавили работу со строками.
1. Определяемся с областью его оптимального использования
2. Как можно четче описываем ту область на которую мы хотим его расширить
3 Отображаем исходный Оберон на то что ХОТИМ получить
module ProgramPattern;
import Texts, Oberon;
w: Texts.Writer; //global writer
proc copy(r: Texts.Reader);
ch: char;
Texts.Read(r, ch);
while ~r.eot do Texts.Write(w, ch); Texts.Read(r, ch) end while
end copy
proc SomeCommand*;
r: Texts.Reader; //local reader
Texts.OpenReader(r, Oberon.This.text, Oberon.Par.pos);
copy(r, w); Texts.Append(Oberon.Log, w.buf)
end SomeCommand;
Texts.OpenWriter(w)
end ProgramPattern.
В результате будет нечто вроде:не понял...Код: [Выделить]a : REAL[10,20,30];