Re[14]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 14:26
Оценка: :)
Здравствуйте, Schade, Вы писали:

S>З.Ы. Написано под впечатлением от первого взгляда на среду BlackBox — убожество, застрявшее где-то в 1993 году.


А что, думаете Oberon Microsystems сделала BlackBox бесплатной и собирается открыть его исходные коды, так просто по доброте душевной? Да потому и собирается, что BlackBox писали десять лет назад под Windows 95 и под первый пень (или под 486-ой). В свое время он продавался примерно за 1'500 швейцарских рублесов. А то что info21 продвигает BlackBox в школы, так туда как раз этого хватит на смену Turbo Pascal 7.0

Хотите что-то современного, экстра-фрэшь, так сказать, то обратите внимание на
http://www.zonnon.ethz.ch/
и на
http://bluebottle.ethz.ch/
Re[17]: Указатель
От: Курилка Россия http://kirya.narod.ru/
Дата: 28.10.04 14:35
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, WolfHound, Вы писали:


WH>>А такие великие опостолы...


К>Прости, ты имел в виду "апостолы" или "осто..."


Или "отсо..."
(звиняюсь за мой французский )
Re[15]: *
От: Курилка Россия http://kirya.narod.ru/
Дата: 28.10.04 14:37
Оценка: +1
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Schade, Вы писали:


S>>З.Ы. Написано под впечатлением от первого взгляда на среду BlackBox — убожество, застрявшее где-то в 1993 году.


СГ> А что, думаете Oberon Microsystems сделала BlackBox бесплатной и собирается открыть его исходные коды, так просто по доброте душевной? Да потому и собирается, что BlackBox писали десять лет назад под Windows 95 и под первый пень (или под 486-ой). В свое время он продавался примерно за 1'500 швейцарских рублесов. А то что info21 продвигает BlackBox в школы, так туда как раз этого хватит на смену Turbo Pascal 7.0


Раздают древний мусор нахаляву бедным российским школам в качестве подачки?
Re[16]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 14:40
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Раздают древний мусор нахаляву бедным российским школам в качестве подачки?


Есть такая идея. Не забывайте, что и компы в школах тоже не современные, хорошо если Celeron-Pentium-2
Re[11]: Указатель
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.10.04 14:44
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:


S>>Это смотря у кого какая повседневная жизнь. Глядя на исходники классов Net там указатели кишат в огромных количествах.

S>> Правда для них и унсейв не указ.

VD>Не кишат они там ни фига. Используются кое-где для оптимизации, и то бестолку, так как никакого толка на сегодня это не дает.


Без указателей на низком уровне ну никак. Другой вопрос, что создав классы без указателей легко можно обойтись.
Но например работая со стримом использовать указатели очень привлекательно особенно работая со структурами валуе типов,
Хотя можно извращаться http://www.rsdn.ru/Forum/Message.aspx?mid=859216&only=1
Автор: Serginio1
Дата: 19.10.04


При проектровании базовых классов для позднего связывания в нативе очнь удобно использовать указатели. В Net же приходится извращаться с рефлекшином, хотя наверное в будущих версиях его оптимизируют (FieldInfo,PropertyInfo).
Просто в Net нельзя напрополую использовать указатели из-за GC.
и солнце б утром не вставало, когда бы не было меня
Re[17]: *
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.04 14:48
Оценка:
Я очень надеюсь, что он в школы не пойдет.

Помните дискуссию
Автор: Сергей Губанов
Дата: 26.10.04
о простоте Оберона перед С#? Так вот, простейший пример из Тура по Оберону:

MODULE MyHello;
    
    IMPORT StdLog;
    
    PROCEDURE Do*;
    BEGIN
        StdLog.String("Hello World!!"); StdLog.Ln;        
    END Do;
    
END MyHello.


Звездочку видите? Цитата:

ObxHello0 is a minimal "hello world" program in Component Pascal...

Exported items in Component Pascal modules are marked by a trailing asterisk; there are no separate header files, definition modules, or the like.


Что такое еxported items? Почему экспортед? Только потому, что взбрело Вирту в голову, что хедеры — бяка? И опять же, чем это легче в оьбяснении и понимании, чем

using System;
class Class1
{
    static void Main()
    {
        Console.WriteLine("Hello World");
    }
}


А сама среда Писать сообщения компилятора в код программы Не, изыди нечистая сила ....


Лучше уж старый добрый Турбо-Паскаль оставить.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[17]: Ссылка vs Указатель
От: Павел Кузнецов  
Дата: 28.10.04 15:05
Оценка:
Кодт:

> Например, ссылка как член объединения.


"Кодт мне друг, но истина дороже"

9.5/1 <...> If a union contains <...> a member of reference type, the program is ill-formed.


> Наконец, в С++ есть такая штука, как типы с семантикой ссылки. Конечно, синтаксически они не полностью совместимы (например, не получится обращаться к членам объекта по такой ссылке)


Кстати, есть предложение разрешить перегрузку operator.() и operator.*(): http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1671.pdf
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[18]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 15:06
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Что такое еxported items?


Все что написано внутри модуля считается инкапсулированным в нем. Модуль является не только единицей компиляции и исполнения, но и единицей инкапсуляции (что правильно). Для того чтобы что-то из написанного можно было увидеть из других модулей это что-то надо как-то отметить, логично да? Вопрос как это синтаксически отметить так чтобы и видно сразу было и писать не много? Вот для этих отметок придумали использовать "*" и "-". Для переменных "-" означает доступ только для чтения, "*" означает полный доступ. Подробности в Langauge Report, а тут пример:

MODULE Test;

TYPE
  MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)

  MyPublicType* = RECORD (* Другие модули этот тип видят *)
    PrivateVariable   : INTEGER; (* Из других модулей эта переменная не видна *)
    ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
    ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
  END;


VAR
  PrivateVariable   : INTEGER; (* Из других модулей эта переменная не видна *)
  ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
  ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)


PROCEDURE DoSmth1(); (* Другие модули не видят этой процедуры *)
BEGIN
 (* ... *)
END DoSmth1;

PROCEDURE DoSmth2*(); (* Другие модули могут вызывать эту процедуру *)
BEGIN
 (* ... *)
END DoSmth2;

END Test;
Re[18]: *
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.04 15:09
Оценка:
Продолжу.

Сам туториал вводит в заблуждение. Как указано в моем предыдущем сообщении, я создал модуль под названием MyHello. Как его запустить? Об этом в начале туториала ничего не сказано. Более того:

Select the string "ObxHello0.Do" below, and then execute command Execute in menu Dev:

ObxHello0.Do


И это срабатывает!! Какого черта? У меня-то модуль называется MyHello. А как мне запустить MyHello? (Ладно, догадываюсь, написать MyHello.Do).

Но, простите, для того, чтобы мне что-то запустить, мне в итоге надо открывать новое окно, писать в нем что-то, выделять, потом выполнять Dev->Execute? Увольте.

А как мне сделать свою собственную рабочую програмку? Которая хотя бы в консоль что-либо выводила? Любой студент/ученик всегда захочет похвастаться результатом, принести ее домой или к другу. И если мне туториал мне на первых паре страниц не показал, как это сделать, зачем мне этот Оберон нужен?

И это все надо обьяснять ученикам. И где простота?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[18]: Ссылка vs Указатель
От: Кодт Россия  
Дата: 28.10.04 15:11
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>

9.5/1 <...> If a union contains <...> a member of reference type, the program is ill-formed.


Поскольку они связаны с неопределённым поведением,


ПК>Кстати, есть предложение разрешить перегрузку operator.() и operator.*(): http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1671.pdf


Да, эта фича будет, пожалуй, полезнее злощастного оператора &()...
Перекуём баги на фичи!
Re[17]: Мощность...
От: Павел Кузнецов  
Дата: 28.10.04 15:14
Оценка:
VladD2:

> Напомню, что в разговоре до сих пор не велось обсуждение явное задание ссылок vs. не явное.


ПК> Дык, как ни крути, хоть указатель, хоть ссылка как тип все равно присутствуют. Разница только в том, явно или нет.

Это очень большая разница! В одном случая ты обязан думать о ней. А в другом необязан.


> Разница между указателями и ссылками в первю очередь заключается в наличии явного разыменования, а стло быть резкого заграмождения кода.


Таким образом, ты согласен с тем, что отличия ссылок в C#/Java от указателей в Паскале/С и т.п. за вычетом адресной арифметики исключительно синтаксические, а семантически это одно и то же?

> Что же касается примера, то выброси из него ссылку и ничего ровным счетом не изменится <...>


Изменится, т.к. без ссылки в языке с явным обозначением ссылок s1 при изменении s2 изменяться не будет.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[15]: Мощность...
От: Павел Кузнецов  
Дата: 28.10.04 15:19
Оценка:
Дарней:

> Указатель — это адрес некоторой области в памяти. Ссылка указывает не на участок памяти, а на объект.


Ага. Теперь, пожалуйста, ту же самую линию рассуждений, но на примере managed указателей в .Net
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[18]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 15:20
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>
M>MODULE MyHello;
    
M>    IMPORT StdLog;
    
M>    PROCEDURE Do*;
M>    BEGIN
M>        StdLog.String("Hello World!!"); StdLog.Ln;        
M>    END Do;
    
M>END MyHello.
M>


M> ...взбрело Вирту в голову, что хедеры — бяка? ...


А Вы не сильно расстроитесь если узнаете что в Component Pascal есть хедеры? В среде BlackBox мышью выделите название модуля MyHello, после этого нажмите на правую кнопку мыши и в появившемся PopUp-меню выберите пункт Interface. Среда BlackBox покажет Вам хедер этого модуля. Для Вашего модуля он будет такой:
DEFINITION MyHello;
  PROCEDURE Do;
END MyHello.

Хедеры в Component Pascal генерятся автоматом на основании меток видимости "*" и "-", так что вручную их писать излишне.

Кстати, хедеры носят название символьных файлов.


P. S.
Добрый совет. В следующий раз, когда захотите порассуждать что там Вирту в голову взбрело или не взбрело, почитайте хотябы хелп.
Re[19]: *
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.04 15:30
Оценка: 2 (2) +3
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Mamut, Вы писали:


M>>Что такое еxported items?


СГ>Все что написано внутри модуля считается инкапсулированным в нем. Модуль является не только единицей компиляции и исполнения, но и единицей инкапсуляции (что правильно). Для того чтобы что-то из написанного можно было увидеть из других модулей это что-то надо как-то отметить, логично да?


Стоп. Предположим я — ученик 7-9 класса. Моя реакция: "Чего?" Переведите с китайского. Что за инкапсуляция. Что за единица компиляции. Что значит увидеть из других модулей?

СГ>Вопрос как это синтаксически отметить так чтобы и видно сразу было и писать не много? Вот для этих отметок придумали использовать "*" и "-". Для переменных "-" означает доступ только для чтения, "*" означает полный доступ.


Для языка, в котором текста и так явно слишком много, это утверждение странно. Почему не пойти по минимизации дальше и не заменить begin end на {}? Или почему не заменить *- на exportable и readonly? Хуже бы от этого не стало. Налицо плохой дизайн языка.

СГ>Подробности в Langauge Report, а тут пример:


Опять же предположим я — ученик 7-9 класса. Зачем мне читать Language Report?

СГ>
СГ>MODULE Test;

СГ>TYPE
СГ>  MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)

СГ>  MyPublicType* = RECORD (* Другие модули этот тип видят *)
СГ>    PrivateVariable   : INTEGER; (* Из других модулей эта переменная не видна *)
СГ>    ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
СГ>    ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
СГ>  END;
СГ>


Для сравнения (гипотетически):

TYPE
MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)

  exportable MyPublicType = RECORD 
  PrivateVariable   : INTEGER; 
  readonly exportable ReadOnlyVariable,
  readonly            ReadOnlyLocalVariable: INTEGER; 
  exportable          ReadWriteVariable: INTEGER;
END;


тоже криво, но зато сразу видно какая переменная чем является и не используются символы, знакомые всем, как знаки математических операторов. А если есть и грамотная раскраска синтаксиса в ИДЕ, то вообще красота.

Единственная причина, по которой существуют извращения типа readonly exportable и exportable — это отказ от классов и полей private и public, которые являются намного интуитивнее, чем эти извращения.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[19]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 15:36
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Продолжу.


Вы уже задаете технические вопросы. Для этого есть специализированные форумы. Например этот:

http://progz.ru/forum/viewforum.php?f=49&amp;sid=b4644fc320c447206c44d594f6f16f63


На счет автономной проги. BlackBox по сути является эмулятором операционной системы Oberon поверх Windows. Oberon является модульной расширяемой операционкой. Ваши личные модули ничем не отличаются от модулей этой оси. Так что все написанные Вами модули надо запускать в runtime envoronment самого BlackBox. Хотите слинковать отдельный экзешник — на здоровье, обращайтесь к разделу хелпа Platform specific issues (Windows). Кстати, там же есть пример того как слинковать сам BlackBox.exe (это если охота внести в него свои изменения).

На сайте info21 есть примеры линковки автономных экзешников.

Кстати этот самый отдельностоящий экзешник, как ни крути, должен будет включать в себя и всю оберонистую операционку (компилятор, сборка мусора и т.д.), так что его размерчик будет что-то около 1 метра. Хотя, если не прилинковывать к нему сборщик мусора с компилятором а прилинковать только модуль с WinAPI, то экзешник будет микроскопический что-то около 3.5 — 4.5 Kb (в зависимости от того вставите Вы в него иконку=1Кб или нет).
Re[20]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 15:42
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Единственная причина, по которой существуют извращения типа readonly exportable и exportable — это отказ от классов и полей private и public, которые являются намного интуитивнее, чем эти извращения.


Повторяю. Единицей инкапсуляции является модуль. Все остальное следует из этого.
Re[21]: *
От: Курилка Россия http://kirya.narod.ru/
Дата: 28.10.04 15:44
Оценка: +1 :))
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Mamut, Вы писали:


M>>Единственная причина, по которой существуют извращения типа readonly exportable и exportable — это отказ от классов и полей private и public, которые являются намного интуитивнее, чем эти извращения.


СГ>Повторяю. Единицей инкапсуляции является модуль. Все остальное следует из этого.


Отстутствие полей private является следствием того, что "единицей инкапсуляции является модуль"
Я хренею от обероновской логики, по мне дак женская ито намного понятней
Re[20]: *
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.04 15:46
Оценка:
Хорошо, согласен, от рантайма никто не застрахован (камень в огород .NET и VCL).
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[21]: *
От: Курилка Россия http://kirya.narod.ru/
Дата: 28.10.04 15:47
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Хорошо, согласен, от рантайма никто не застрахован (камень в огород .NET и VCL).


+ Java

Re[22]: *
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.04 15:51
Оценка: +2
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>Здравствуйте, Mamut, Вы писали:


M>>>Единственная причина, по которой существуют извращения типа readonly exportable и exportable — это отказ от классов и полей private и public, которые являются намного интуитивнее, чем эти извращения.


СГ>>Повторяю. Единицей инкапсуляции является модуль. Все остальное следует из этого.


К>Отстутствие полей private является следствием того, что "единицей инкапсуляции является модуль"

К>Я хренею от обероновской логики, по мне дак женская ито намного понятней

Вот я и говорю, в результате появляются извращения (а это именно извращения) вроде постфиксов — и *

И этому человеку (Вирту) не нравятся = и ==
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.