Re[5]: Oberon???????????????????????????????????
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.10.04 13:39
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Именно в родной код. Безопасность встроена в сам язык. В оберонистой программе никогда не бывает переполнения буфера (range index check).


В джаве тоже.

СГ>И Вам никогда не удасться что-то читать или писать по неправильному адресу, просто потому что в языке нет такого понятия как адрес, адресная арифметика, и самого адресного пространства как такового.


В джаве тоже.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
AVK Blog
Re[3]: Oberon???????????????????????????????????
От: WFrag США  
Дата: 21.10.04 13:44
Оценка: +1
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Ява и Шарп хуже Оберона тем, что Оберон проще, чище и меньше и в то же время он полный, в смысле, достаточный современный

СГ>объектно ориентированный модульный императивный язык общего назначения со строгой статической типизацией и встроенными
СГ>механизмами безопасности (проверка индексов, правильное приведение типов, сборка мусора).

Чище чем Java в каком плане?

Всякие проверки и сборка мусора есть и в Java. Или ты о чем?

Рефлекшн, кстати, в нем есть?

СГ>О превосходстве оберонов над Явой на ее родном поле боя — в интернете, можно почитать там:

СГ>http://www.uni-vologda.ac.ru/oberon/
СГ>[q]
СГ>Juice-технология

По-моему, родное поле Java — middleware. Апплеты мне попадаются существенно реже, чем, например, stand-alone приложения на Java.

СГ>Juice превосходит Java-технологию во всем кроме величины затрат на рекламу:


СГ>1) Основан на более простом и совершенном языке


Что значит более простой язык?

СГ>2) Обеспечивает существенно большую скорость исполнения аплетов


Видимо, за счет some kind Woodoo Magic? Откуда "существенность"-то взялась? Ну или хотя бы ссылочку бы на статистику.

СГ>3) Код Juice-аплета компактнее байт-кода Java


Тут ничего не скажу, страничка Juice не открывается.
... << RSDN@Home 1.1.4 beta 3 rev. 205>>
Re[5]: арифметические, логические, бинарные
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 16:12
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Ну Вы опять говорите о Паскале имея в виду тот древний, который прямой потомок Алгола.


Скорее на основании своего опыта работы с Дельфи.

СГ> В современном (от 1994 года) Component Pascal (тот который есть модифицированный Oberon-2) бинарных операций с числами нет вообще.


Мать моя женщина!... А как же на нем вообще можно тогда программирование учить?

СГ> Число — это математическая абстракция, программист не должен знать как она реализована на конкретной машине. Это делает язык переносимым между любыми архитектурами компьютеров.


Все реально используемые на практике языки имеют бинарные операции. И многие из них прекрасно переносятся на другие платыормы. В конце концов биты то везеде одни и те же. А разницу можно скрыть за языком и описанием размеров в виде системных констант.

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


На счет SET-ов согласен. Красивая и удобная абстракция. Это пожалуй одна из очень редких фич которые я с удовольствием увидил бы в языках наследниках С.

СГ>Для логических операций, само-собой, предусмотрен тип BOOLEAN... думаю, излишне о нем что-либо рассказывать...


Не нужно обяснять почему язык не имеющий бинарных операций (с битами) неудастся применять в реальных проктах?

СГ>И так, в современном Паскале (1) арифметические, (2) логические и (3) бинарные операции можно осуществлять только над соответствующими типами данных: (1) числовыми, (2) буллевым, (3) множествами. То есть, все безупречно purify! Для школьников и студентов — то что доктор прописал!


Возможно я незнаю "современного паскаля", но в Дельфи с бинарными операциями полная задница. Так:
if a = b and b < c then ...

будет рассматриваться как:
if a = BinAnd(b, b)) < c then ...

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

СГ>
СГ>set     := BITS(integer);
СГ>integer := ORD(set);
СГ>

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

Нда. Типа оторвались от платформы, но были притянуты к ней обратно. А не проще ли было как в том же С сделать? Ввести бинарные и логические операторы?
Куда проще читать такой код:
if ((a & b) != 0 && c < b) ...

чем:
if (((a and b) != 0) and (c < b)) then ...
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Oberon???????????????????????????????????
От: Poisson Россия  
Дата: 21.10.04 18:12
Оценка: 1 (1)
Здравствуйте, Kluev, Вы писали:


K>>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор.

K>>>Более того в джаве только классы, а в питоне можно и с функций начать.
Про питон я знаю постольку-поскольку, поэтому дальше просто вопросы, а не придирки.

— как обстоят дела с GUI? В смысле, насколько легко привязывается интерфейс к коду?
— есть ли готовые библиотеки распределенного взаимодействия (a la .net remoting)?
— как дела с IDE? С отладчиком, refactoring browser'ом ну и всем чем полагается.
— легко ли обеспечить взаимодействие с OS? Если говорить о win32 — использование dll, COM..

В случае VisualWorks Smalltalk эти вопросы решены на 4-5, а browser/debugger — на 5+.

K>В качестве примера кодец на питоне:

>>>> for i in range(10) : print i

Вот тоже кодец, похожий, на Smalltalk'е =)

1 to: 10 do: [:each | Transcript show: each]


K>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти


Аналогично, выполняется в Workspace'е, без [явной] компиляции. Однако, в отличие от питона, я могу посмотреть, а что же такое происходит при выполнении этого куска кода. Дело в том что to:do: — это метод класса Number, на исходник котороо можно посмотреть или зайти отладчиком. А show: — метод класса TextCollector, опять-таки все можно посмотреть-потрогать руками и даже изменить. Ну и так далее.

Вся прелесть смоллтока как языка для обучения в том, что в нем нет ключевых слов вроде for, while, if и т.п. — все ветвления и циклы реализованы за счет стандартного механизма посылки сообщенияй объектам. Browser в руки и вперед.
... << RSDN@Home 1.1 beta 2 >>
Re[6]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 19:03
Оценка:
Здравствуйте, FR, Вы писали:

FR>У питона куча реальных преимуществ перед Шарпом, так же как и у Шарпа перед Питоном.

FR>А главное же преимущество более высокий уровень языка. (Да кое-что я тебе в теме C++ и Net продемонстрировал, но ты куда-то пропал оттуда)

Вот как раз более высокого уровня языка я и не увидел. Отдельные фичи (вроде встроеных списков), да, но общего приемущества хоть убей не вижу.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 19:03
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Я сам упертый Cpp-шник начинавший с паскаля (потом джава был, потом плюсы). Если бы я начал с нуля то начал бы именно с питона. Отсутсвие типизации на началном этапе это не минус а плюс. А чтобы оценить кайф скачай не книгу а среду. Учится можено прямо в интеракивном режиме плавно переходя от калькулятора к программированиюю Иеальный вариант чтобы обяснить все быстро и на пальцах. Вот пример


Да не увидил я тут ничего принципиально новгого. Чем это лучше чем:
class Summator
{
    public int a;
    public int b;
    
    public int Sum()
    {
        return a + b;
    }
}

?
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 19:03
Оценка: 10 (1)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Оберон не мертвяк, то что Вы о нем ничего не знаете говорит о Вас и только о Вас.


Мертвяк. Причем чистейший воды. Ни одного комерческого проекта.

СГ>Ява и Шарп хуже Оберона тем, что Оберон проще


Простота должна иметь разумные пределы.

СГ>, чище


Вот это уже неправда.

СГ> и меньше и в то же время он полный, в смысле, достаточный современный объектно ориентированный


Вот ОО в нем — это извращение. Собственно познакомившись (несколько лет тому назад) со взглядами Вирта на ООП я и понял, что жить этому извращению не прийдется.

СГ>модульный


А типа Ява и Шарп не модульные.

СГ>императивный язык общего назначения со строгой статической типизацией


Ага. Ну, просто "он один такой".

СГ> и встроенными механизмами безопасности (проверка индексов, правильное приведение типов, сборка мусора).


Ага. Ну, куда там той же Яве и Шарпу до него?

СГ>О превосходстве оберонов над Явой на ее родном поле боя — в интернете, можно почитать там:

СГ>http://www.uni-vologda.ac.ru/oberon/
СГ>[q]
СГ>Juice-технология

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

СГ>Летом 1996 года профессором Калифорнийского университета в Ирвине, учеником Н.Вирта Михаэлем Францем и его аспирантом Томасом Кистлером была представлена технология распространения исполнимого кода в Интернет, названная авторами Juice (по-русски — сок). Juice основан на использовании Оберона и влючает с одной стороны инструментальную компоненту для Оберон-системы Oberon System 3, обеспечивающую компиляцию написанных на Обероне модулей в платформно-независимое представление. Второй частью Juice является дополнение (plug-in) к Интернет-браузерам, обеспечивающее компиляцию получаемого Juice-кода "на лету" в родной код, его загрузку и исполнение.


Вот этими самыми пресрелизами все эти соки и заночилсь. Как раз в том самом 96-ом.

СГ>Juice превосходит Java-технологию во всем кроме величины затрат на рекламу:


СГ>1) Основан на более простом и совершенном языке


Гы-гы. Совершенство еще то.

СГ>2) Обеспечивает существенно большую скорость исполнения аплетов


Два раза Гы-гы. Раскажи это тем кто не запускал ХотСпот. И вообще судить по 96-му году очень забавно.

СГ>3) Код Juice-аплета компактнее байт-кода Java


И как Ява живет со столь ужасно распухшим байткодом? Он же всего в двое компактнее аналогичного х86 кода?!

В общем, не смешите мои тапочки. Оберон мертворожденное детя интерес к которому испытывает только те самые проффесоры обученые Виртом. При всем моем к нему почтении ему бы хоть чуть-чуть реалистом быть.

Развитие Оберона с 96 года нет. Ява же бурно развивается и в основном в правильную сторону. Возможно в ней до сих пор хватает недочетов. Но это проверенный практикой язык (и технология). Она более чем пригодна для обучения. Так что не нужно запудривать людям мозги мертвятиной вроде Оберона. Им все же в будущем программы писать. И на не гипотетических языках. А на реальных.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 19:03
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Именно об этом Вирт и рассказывает в своем докладе:

СГ>

СГ>Преподавание информатики: потерянная дорога
СГ>Приветствие на открытии Международной конференции по преподаванию информатики ITiCSE
СГ>г. Аархус (Дания), 24 июня 2002 г.

СГ>http://www.inr.ac.ru/~info21/greetings/wirth_doklad_rus.htm

Ему бы спрятать свои амбиции по дальше и хоть раз на вещи трезво взглянуть.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: арифметические, логические, бинарные
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 21.10.04 19:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Куда проще читать такой код:

if ((a & b) != 0 && c < b) ...


Тоже самое на Обероне (Component Pascal):
VAR a, b: SET;
    c: INTEGER;
BEGIN
  a := {1, 4, 27, 30}; (* биты 1,4,27,30 равны 1 остальные биты равны 0 *)
  b := {0, 6, 27};     (* биты 0,6,27 равны 1 остальные биты равны 0 *) 
  c := 100;
  INCL(a, 8);          (* Бит номер 8 теперь тоже равен 1 *) 
  EXCL(b, 6);          (* Бит номер 6 теперь равен 0 *) 
  IF (a*b # {}) & (c < ORD(b)) THEN



Не пожалейте чуточку времени и прочитайте что написано там:
http://www.inr.ac.ru/~info21/cpascal/cp_report_1.4_rus.htm#8.2.3

8.2.3 Операции над множествами

+ объединение
— разность (x — y = x * (-y))
* пересечение
/ симметричная разность (x / y = (x-y) + (y-x))

Re[4]: Oberon???????????????????????????????????
От: ON  
Дата: 21.10.04 21:06
Оценка: :))) :))) :)))
From: WolfHound rsdn ICQ_315059559
LVV>Хочется альтернативный синтаксис показать.
>Зачем?

программист должен уметь языком овладеть задачей, но чтобы та не подхватила синтаксис
Posted via RSDN NNTP Server 1.9 gamma
Re[7]: Oberon???????????????????????????????????
От: FR  
Дата: 21.10.04 21:21
Оценка:
Здравствуйте, VladD2, Вы писали:

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


FR>>У питона куча реальных преимуществ перед Шарпом, так же как и у Шарпа перед Питоном.

FR>>А главное же преимущество более высокий уровень языка. (Да кое-что я тебе в теме C++ и Net продемонстрировал, но ты куда-то пропал оттуда)

VD>Вот как раз более высокого уровня языка я и не увидел. Отдельные фичи (вроде встроеных списков), да, но общего приемущества хоть убей не вижу.


Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи
... << RSDN@Home 1.1.3 stable >>
Re[6]: Oberon???????????????????????????????????
От: FR  
Дата: 21.10.04 21:21
Оценка: 1 (1)
Здравствуйте, Poisson, Вы писали:

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



K>>>>На питоне надо новичков учить. Прост как три копейки и в командном режиме может работать как калькулятор.

K>>>>Более того в джаве только классы, а в питоне можно и с функций начать.
P>Про питон я знаю постольку-поскольку, поэтому дальше просто вопросы, а не придирки.

конечно совершено на придирки не похоже

P>- как обстоят дела с GUI? В смысле, насколько легко привязывается интерфейс к коду?


нормально с GUI, доступны tk, wxWindows, Qt, MFC ( ) и WinAPI

P>- есть ли готовые библиотеки распределенного взаимодействия (a la .net remoting)?


да

P>- как дела с IDE? С отладчиком, refactoring browser'ом ну и всем чем полагается.


скорее на тройку, хотя для интерпретатора это не так важно.

P>- легко ли обеспечить взаимодействие с OS? Если говорить о win32 — использование dll, COM..


легко, используя библиотеку PyWin

P>В случае VisualWorks Smalltalk эти вопросы решены на 4-5, а browser/debugger — на 5+.


K>>В качестве примера кодец на питоне:

>>>>> for i in range(10) : print i

P>Вот тоже кодец, похожий, на Smalltalk'е =)


P>
P>1 to: 10 do: [:each | Transcript show: each]
P>


по моему как тут уже сказали птичий язык

K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти


P>Аналогично, выполняется в Workspace'е, без [явной] компиляции. Однако, в отличие от питона, я могу посмотреть, а что же такое происходит при выполнении этого куска кода. Дело в том что to:do: — это метод класса Number, на исходник котороо можно посмотреть или зайти отладчиком. А show: — метод класса TextCollector, опять-таки все можно посмотреть-потрогать руками и даже изменить. Ну и так далее.


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

P>Вся прелесть смоллтока как языка для обучения в том, что в нем нет ключевых слов вроде for, while, if и т.п. — все ветвления и циклы реализованы за счет стандартного механизма посылки сообщенияй объектам. Browser в руки и вперед.


У смолтока очень большой недостаток для целей обучения, он слишком не похож на самые распрастраненые языки.
... << RSDN@Home 1.1.3 stable >>
Re[5]: Oberon???????????????????????????????????
От: prVovik Россия  
Дата: 21.10.04 21:24
Оценка:
Здравствуйте, ON, Вы писали:

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


перечитал фразу несколько раз...
Интересно, кто-нибудь понял, что ON хотел сказать?

... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[7]: арифметические, логические, бинарные
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 21:53
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 21:53
Оценка:
Здравствуйте, Poisson, Вы писали:

Здается мне, что в Питоне понятнее и логичнее. А смотреть на то как работают операторы и встроенные функции как-то даже в голову не приходит.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 21:53
Оценка:
Здравствуйте, Kluev, Вы писали:

K>
>>>> for i in range(10) : print i
K>


K>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти


Ну, и чем это отличается от Шарпа:
foreach (int i Range(10))
    Console.WriteLine(i);

?

А range и xrange не долго слабать и на самом Шарпе:
        static int[] Range(int len)
        {
            return Range(0, len, 1);
        }

        static int[] Range(int start, int len, int inc)
        {
            int count = (len - start) / inc;
            int[] array = new int[count];
            for (int val = start, i = 0; i < count; i++, val += inc)
                array[i] = val;
            return array;
        }


Или:
        static IEnumerable<int> Range2(int len)
        {
            return Range2(0, len, 1);
        }

        static IEnumerable<int> Range2(int start, int len, int inc)
        {
            int count = (len - start) / inc;
            for (int val = start, i = 0; i < count; i++, val += inc)
                yield return val;
        }
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 22:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи


Это не ответ. А приемущества перед плюсами можно перечислять часами. Хотя это и не избавляет от некоторых недостатков.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Oberon???????????????????????????????????
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.10.04 22:06
Оценка:
Здравствуйте, prVovik, Вы писали:

V>перечитал фразу несколько раз...

V>Интересно, кто-нибудь понял, что ON хотел сказать?

V>


Это штка юмеора. Тебе не понять.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Oberon???????????????????????????????????
От: FR  
Дата: 21.10.04 22:39
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>А range и xrange не долго слабать и на самом Шарпе:

VD>
VD>        static int[] Range(int len)
VD>        {
VD>            return Range(0, len, 1);
VD>        }

VD>        static int[] Range(int start, int len, int inc)
VD>        {
VD>            int count = (len - start) / inc;
VD>            int[] array = new int[count];
VD>            for (int val = start, i = 0; i < count; i++, val += inc)
VD>                array[i] = val;
VD>            return array;
VD>        }
VD>


VD>Или:

VD>
VD>        static IEnumerable<int> Range2(int len)
VD>        {
VD>            return Range2(0, len, 1);
VD>        }

VD>        static IEnumerable<int> Range2(int start, int len, int inc)
VD>        {
VD>            int count = (len - start) / inc;
VD>            for (int val = start, i = 0; i < count; i++, val += inc)
VD>                yield return val;
VD>        }
VD>


лучше так:

def my_range(n):
    i = 0
    while i < n:
        yield i
        i += 1


... << RSDN@Home 1.1.3 stable >>
Re[9]: Oberon???????????????????????????????????
От: FR  
Дата: 21.10.04 22:45
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


FR>>Угу С# тоже никаких преимуществ перед плюсами не имеет так небольшие фичи


VD>Это не ответ. А приемущества перед плюсами можно перечислять часами. Хотя это и не избавляет от некоторых недостатков.


Так у тебя тоже не ответ.
Любое преимущество можно обозвать отдельными фичами, а можно и часами его перечислять
... << RSDN@Home 1.1.3 stable >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.