OberonCore
https://forum.oberoncore.ru/

Zonnon or Component Pascal?
https://forum.oberoncore.ru/viewtopic.php?f=21&t=40
Страница 2 из 4

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 01:57 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Когда переменная самого объекта (self, this...) должна явно быть указана в списке параметров.


И чем это хорошо?

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 02:00 ]
Заголовок сообщения: 

Борис Рюмшин писал(а):
Delphi .NET это уже не Delphi.


Конечно. Все течет, все изменяется. В том виде, в котором она была в двадцатом веке, на современное RAD-средство она не тянет.

Автор:  starant [ Четверг, 01 Декабрь, 2005 11:15 ]
Заголовок сообщения: 

Vlad писал(а):
И чем это хорошо?

Все создано для повышения надежности и безопасности.
Например, в С++ переменной типа int можно присвоить значение float и компилятор не выдаст никакого сообщения об ошибке, фактически, он заставляет меня саостоятельно следить за типами. Зачем мне лишний напряг и о какой безопасности можно говорить?

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 12:20 ]
Заголовок сообщения: 

starant писал(а):
Все создано для повышения надежности и безопасности.
Например, в С++ переменной типа int можно присвоить значение float и компилятор не выдаст никакого сообщения об ошибке,


Ну это смотря какой компилятор ;) VC говорит:
warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
В то же время в джаве меня напрягало писать вещи типа short(3).

starant писал(а):
фактически, он заставляет меня саостоятельно следить за типами. Зачем мне лишний напряг и о какой безопасности можно говорить?


C++ строго типизированный язык и просто так привести тип X к типу Y ты не сможешь (за исключением упомянутых тобой моментов, связанных с совеместимостью с C). Можешь ввести свои собственные my_float, my_int и т.д. и запретить приведение одного к другому. Кстати, возможностей проверить соответствие типов на этапе компиляции у С++ на порядок больше, чем у всяких BB/Java/C#, за счет механизма шаблонов.

P.S. А теперь расскажи, причем здесь self как параметр метода?

Автор:  Anton [ Четверг, 01 Декабрь, 2005 13:05 ]
Заголовок сообщения: 

Vlad писал(а):
Ну это смотря какой компилятор ;) VC говорит:
warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
В то же время в джаве меня напрягало писать вещи типа short(3).

Ну это смотря какой уровень warning'ов выставить. Если у нас корпоративный стандарт 4 и в итоговой сборке не должно быть ни одного warning'а, то да. Но при создании нового проекта можно запросто забыть и будет тишь да гладь :)
Vlad писал(а):
C++ строго типизированный язык и просто так привести тип X к типу Y ты не сможешь (за исключением упомянутых тобой моментов, связанных с совеместимостью с C).

Действительно С++ более типизированный язык, но вот поддержка совместимости с С увы портит всю картину.
Vlad писал(а):
Можешь ввести свои собственные my_float, my_int и т.д. и запретить приведение одного к другому.

Ага :) Породить еще одно подмножество языка и тем самым еще больше усложнить и без того уж больно "навороченый" язык.
Vlad писал(а):
Кстати, возможностей проверить соответствие типов на этапе компиляции у С++ на порядок больше, чем у всяких BB/Java/C#, за счет механизма шаблонов.

Ох уж этот механизм шаблонов. :roll:
Во-первых это препроцессор, он же во-вторых и в-третьих.
Т.е. мы имеем за это:
- порой весьма непредсказуемую генерацию кода (в смысле его объема) и как следствие увеличение размера приложения.
- затруднение отладки.
- ухудшение читаемости кода.

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 15:30 ]
Заголовок сообщения: 

Anton писал(а):
Но при создании нового проекта можно запросто забыть и будет тишь да гладь :)


У нас проекты генерятся автоматически.

Anton писал(а):
Ага :) Породить еще одно подмножество языка и тем самым еще больше усложнить и без того уж больно "навороченый" язык.


Это "подмножество" назыается DSL, и оно вполне может быть оправдано для решения специфических задач.

Anton писал(а):
Ох уж этот механизм шаблонов. :roll:
Во-первых это препроцессор, он же во-вторых и в-третьих.


Шаблоны - это не препроцессор. Если у тебя возникают такие ассоциации - то ты просто не умеешь их готовить.

Anton писал(а):

Т.е. мы имеем за это:
- порой весьма непредсказуемую генерацию кода (в смысле его объема) и как следствие увеличение размера приложения.


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

Anton писал(а):

- затруднение отладки.


Ну здесь многое от компилятора зависит. К VC у меня особых претензий нет. Кстати, некоторые вообще без отладчика обходятся ;)

Anton писал(а):
- ухудшение читаемости кода.


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

Автор:  Илья Ермаков [ Четверг, 01 Декабрь, 2005 17:56 ]
Заголовок сообщения: 

Явный self-параметр, так же, как и требование всегда указывать имя модуля (отсутствие возможности сказать using...) - это благо, т.к. в результате читабельность кода в разы увеличивается. Я в этом убедился, т.к. многие подсистемы ББ излазил вдоль и поперек. Сразу видны все связи, а, кроме того, выделив имя внешнего элемента и нажав Source, можно сразу перейти к нему, таким образом пройдя всю иерархию модулей, как по гиперссылкам. А без полного имени среда не смогла бы так легко отработать переход, если вообще смогла бы...

Ну, насчет шаблонов...
Цитата:
Кстати, возможностей проверить соответствие типов на этапе компиляции у С++ на порядок больше, чем у всяких BB/Java/C#, за счет механизма шаблонов.

Вот про это не надо, с шаблонами работал я очень плотно. Если у шаблона более трех параметров, а где-то еще эти параметры передаются далее для инстанционирования шаблонов из STL, то при малейшей ошибке или опечатке бывает такой ступор... Какой там типизацию проверить, замахаешься читать огромное на десятки строк сообщение об ошибке, в котором раскрыты все эти подстановки... Хотя шаблоны есть очень хорошая вещь. Однако мне больше нравится подход Ada, где единицей обощения является модуль. Иногда инстанциирование выглядит длиннее, зато понятнее.

Кстати, есть в России проект ОБерона с шаблонами - язык О2 называется. Кому интересно, могу ссылочку откопать...

Кстати, вопрос к аудитории: почему в C# Microsoft отказалась от шаблонов? Вроде как общая тенденция сегодня - это метапрограммирование (динамическая работа с типами и кодом), а не обощенное программирование?

Автор:  Anton [ Четверг, 01 Декабрь, 2005 18:16 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
А без полного имени среда не смогла бы так легко отработать переход, если вообще смогла бы...

Есть в VC такое действо. Но к-ааа-к все это неспешно происходит надо сказать. А если у тебя например метод с одинаковым имененм встречается в нескольких классах, то тебе на выбор вываливаются все классы где он встречается.
Илья Ермаков писал(а):
Вот про это не надо, с шаблонами работал я очень плотно. Если у шаблона более трех параметров, а где-то еще эти параметры передаются далее для инстанционирования шаблонов из STL, то при малейшей ошибке или опечатке бывает такой ступор... Какой там типизацию проверить, замахаешься читать огромное на десятки строк сообщение об ошибке, в котором раскрыты все эти подстановки...

Я с шаблонами каждый день плотно работаю. :) Порой с удивлением узнаешь что тебе в код пихается при каком ни будь KeyFieldInit<Fld,Arg1>::Init( rec, fld1, arg1 );
А как приятно растут в размерах заголовочные файлы :?
Илья Ермаков писал(а):
Кстати, вопрос к аудитории: почему в C# Microsoft отказалась от шаблонов? Вроде как общая тенденция сегодня - это метапрограммирование (динамическая работа с типами и кодом), а не обощенное программирование?

Предполагаю что отчасти это связано с тем что программист вынужден фактически учить 2 языка и работать на 2-х различных уровнях абстракции. Что вряд ли отражается позитивно на результате, особенно на уровне больших проектов.

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 19:26 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
А без полного имени среда не смогла бы так легко отработать переход, если вообще смогла бы...


Кстати, по поводу среды. Где подсветка синтаксиса и все остальное?

Илья Ермаков писал(а):
Цитата:
Кстати, возможностей проверить соответствие типов на этапе компиляции у С++ на порядок больше, чем у всяких BB/Java/C#, за счет механизма шаблонов.

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


Давай котлеты отдельно, а мухи отдельно. Типизацию компилятор проверяет? Ошибиться тебе не дает? Значит мое утвержденин верно. Тебе не нравится диагностика твоего компилятора? Мне тоже не нравится :) Но это другая проблема, из той же оперы, что и "нечитабельность" темплейтного кода.

Илья Ермаков писал(а):
Кстати, есть в России проект ОБерона с шаблонами - язык О2 называется. Кому интересно, могу ссылочку откопать...


Ну если попадется - кинь. А то я не представляю как можно программить без вычислений над типами :)

Илья Ермаков писал(а):
Кстати, вопрос к аудитории: почему в C# Microsoft отказалась от шаблонов? Вроде как общая тенденция сегодня - это метапрограммирование (динамическая работа с типами и кодом), а не обощенное программирование?


На rsdn.ru была большая дискуссия на эту тему. Проблема не в тенденции, а в том, что трудно совместить одно с другим.

Автор:  Vlad [ Четверг, 01 Декабрь, 2005 19:34 ]
Заголовок сообщения: 

Anton писал(а):
А если у тебя например метод с одинаковым имененм встречается в нескольких классах, то тебе на выбор вываливаются все классы где он встречается.


VisualAssist рулит, контекст он учитывает. И все летало еще на K6-400.

Anton писал(а):
Я с шаблонами каждый день плотно работаю. :) Порой с удивлением узнаешь что тебе в код пихается при каком ни будь KeyFieldInit<Fld,Arg1>::Init( rec, fld1, arg1 );


Предложи альтернативу без темплейтов ;)

Anton писал(а):
А как приятно растут в размерах заголовочные файлы :?


Хидеры можно бить...

Автор:  Илья Ермаков [ Четверг, 01 Декабрь, 2005 20:45 ]
Заголовок сообщения: 

Цитата:
Кстати, по поводу среды. Где подсветка синтаксиса и все остальное?


А что, собственно, надо? Подсветку? Так он же и так шрифт заглавный, куда еще жирнить? Разве что цветом... Ну дык что-то такое есть где-то... Написать эту подсветку - полчаса, кстати. Обявляется свой потомок Services.Action, у него - единственная процедура Do. Она берет Controllers.FocusView(). Если он IS TextViews.View, то берет view.ThisModel(). А дальше - просканить модель и расцветить ключевые слова. Всего строк 20-30 в процедуре. Ну и создали объект Action - и на очередь его, в Services. И какждый раз при "простое" он будет все расцвечивать, да хоть в горошек... То, что я об этом только рассказываю, а не пишу, объясняется одной простой причиной: а на что оно мне надо?
Цитата:
- Был у меня один такой... Крылья придумал!
- Ну, ну...
- Что ну? На бочку с порохом я его посадил, пущай полетает."
(С) Рязанов

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

Можно и выпадающий список сделать, кому невмоготу. Таким же макаром. Я специально этого делать не буду - Ctrl-D прекрасно хватает, а отстутсвие автоподстановки, по крайней мере, заставляет тренировать память. Кстати, привык без автоподстановки, когда в Buildere пришлось колбасить билиотеку шаблонов, да еще + кое-что на макросах. Вот когда ввод точки завешивал среду на две минуты. Безрезультатно притом.

А шаблоны, конечно, вещь полезная. Но больше даже - перегрузка операторов. При создании библиотек, особенно математических. Иначе на длинных числах писать Plus(...Mul(...)) замучаешься. Ну а в деловых приложениях она не очень нужна. Перегрузка разыменования и умные указатели, скажешь? А все-таки это придется отставить, и от автоматического управления памятью никуда не деться.

А ВОТ ОН, ПРОЕКТ ОБЕРОНА С ШАБЛОНАМИ

Автор:  Борис Рюмшин [ Четверг, 01 Декабрь, 2005 23:19 ]
Заголовок сообщения: 

"Оберон с шаблонами" правильно называется O2M (http://www.softcraft.ru)...

Я было собрался форум новый открыть, по Zonnon и иже с ним, и перекинуть эту ветку туда, но вижу, что обсуждение ушло далеко от темы.

Автор:  Info21 [ Четверг, 01 Декабрь, 2005 23:55 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
... Но больше даже - перегрузка операторов. При создании библиотек, особенно математических. Иначе на длинных числах писать Plus(...Mul(...)) замучаешься. ...


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

Автор:  Vlad [ Пятница, 02 Декабрь, 2005 01:03 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
А что, собственно, надо? Подсветку?


Хотя бы ее, для начала.

Илья Ермаков писал(а):
Так он же и так шрифт заглавный, куда еще жирнить?


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

Илья Ермаков писал(а):
Разве что цветом... Ну дык что-то такое есть где-то... Написать эту подсветку - полчаса, кстати.


Отмазка в стиле С++ ;) "Нет готовой (встроенной в язык) функциональности? Ее можно написать!"

Илья Ермаков писал(а):
хватает, а отстутсвие автоподстановки, по крайней мере, заставляет тренировать память.


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

Илья Ермаков писал(а):
Кстати, привык без автоподстановки, когда в Buildere пришлось колбасить билиотеку шаблонов, да еще + кое-что на макросах. Вот когда ввод точки завешивал среду на две минуты. Безрезультатно притом.


Не упоминай всуе этот "продукт" ;) Я писал на нем около двух лет. Очень скоро из всей IDE я стал использовать только редактор форм и иногда отладчик. Хотя коллеги как-то уживались и с убогим редактором кода и даже первое время пытались собирать проект из IDE (потом и им пришлось на make-файл уйти). Но я люблю комфорт и нелюлю бесполезные телодвижения :)

Илья Ермаков писал(а):
А шаблоны, конечно, вещь полезная. Но больше даже - перегрузка операторов. При создании библиотек, особенно математических.


Математические библиотеки - фигня ;) Никогда ими не пользовался. А вот сконструить что-то сложное без кучи скобок с помощью перегружаемых операторов можно. И я подозреваю, что ты даже не подозреваешь что ;)

Илья Ермаков писал(а):
разыменования и умные указатели, скажешь? А все-таки это придется отставить, и от автоматического управления памятью никуда не деться.


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

Код:
thread_safe<TSomObject> safe_obj = GetSomeObject();
safe_obj->Method1();


Данный смартпоинтер позволяет вызывать методы объектов, залочивая их перед вызовом и разлочивая после того, как метод отработал.

Илья Ермаков писал(а):


Просмотрел. Если я правильно понял, обобщенные типы должны быть определены заранее (вроде в Аде также сделано)? Это сильно ограничивает область их применимости.

Автор:  Vlad [ Пятница, 02 Декабрь, 2005 01:10 ]
Заголовок сообщения: 

info21 писал(а):
Проблемы в самих алгоритмах (точнее, в сочетании математики с алгоритмами) и их проверке.


Кстати об алгоритмах ;) Какой подход предлагает BB? Как выглядит аналог sort я могу представить. А как выглядят for_each/find/accumulate/copy/transform? И, в частности, насколько применимы high-orger функции (есть ли опыт использования их в повседневной практике)?

Автор:  Vlad [ Пятница, 02 Декабрь, 2005 01:11 ]
Заголовок сообщения: 

Борис Рюмшин писал(а):
"Оберон с шаблонами" правильно называется O2M (http://www.softcraft.ru)...


А есть что-то помимо спецификации? Прежде всего интересуют примеры использования.

Автор:  Илья Ермаков [ Пятница, 02 Декабрь, 2005 01:25 ]
Заголовок сообщения: 

1) Если синтаксис заглавный, то подсветка не нужна. Масло масленное получается. Восприятие только ухудшается. Это любой веб-дизайнер знает.
2) От заглавного синтаксиса никуда не деться, т.к. стандарт языка. По сему подсветка синтаксиса таки излишней будет. Согласимся?
3) Заглавный сиснтаксис может показаться непривычным, я тоже сначала так думал. Но практика показывает совсем иное - воспринимается лучше. Это надо попробовать. В том то и дело, что синтаксис не закрывает все остальное, а наоборот - отделен от него. КП - это первый язык, на котором я с удовльствием стал копаться в чужих исходниках. До этого - терпеть не мог. Попробуйте "погулять" по среде, перемещаясь от модуля к модулю простым выделением имени и щелчком в конт. меню. Наглядные листинги и оригинальная навигация заменяют многие навороты других IDE.

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

Цитата:
Отмазка в стиле С++ "Нет готовой (встроенной в язык) функциональности? Ее можно написать!"

ЧТо самое интересное, ты недалек от истины. Из этой среды можно лепить что угодно. Во многом - из-за метапрограммирования.

С блокировкой объекта пример хорош, не спорю.

Ну, для этого Active Oberon у нас есть :-) А если серьезно, то над проблемой билиотеки многопоточности в ББ надо еще думать. Технически-то проблемы никакой, но как это концептуально оформить, чтобы не просто дублировать системные концепции, а навернуть нечто более абстрактное.

Автор:  Takun [ Пятница, 02 Декабрь, 2005 01:28 ]
Заголовок сообщения: 

Vlad писал(а):
C++ строго типизированный язык и просто так привести тип X к типу Y ты не сможешь (за исключением упомянутых тобой моментов, связанных с совеместимостью с C).

Еще бы не забыть перегрузку оператора присваивания, которая во многом сводит строгость типизации на нет.
А за одно вводит неприятные побочные эффекты, например результат действий (С нотация):
1) b = a; c = a;
2) b = a; c = b;
может быть различен.
Более того, сама операция присваивания может вызвать ошибку исполнения.
В гробу я видел такую типизацию... :(

Автор:  Илья Ермаков [ Пятница, 02 Декабрь, 2005 01:28 ]
Заголовок сообщения: 

Vlad писал(а):
Борис Рюмшин писал(а):
"Оберон с шаблонами" правильно называется O2M (http://www.softcraft.ru)...


А есть что-то помимо спецификации? Прежде всего интересуют примеры использования.


Вроде нет. Проект любительский и доведен до ума вряд ли будет.
Но кое-что позаимстовать для ББ можно будет.

Автор:  Vlad [ Пятница, 02 Декабрь, 2005 02:02 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
1) Если синтаксис заглавный, то подсветка не нужна. Масло масленное получается. Восприятие только ухудшается. Это любой веб-дизайнер знает.


Че-то я не видел чернобелых страниц с заглавными и строчными буквами. Даже на ya.ru. Более того, я не видел страниц, где количесво заглавных букв по отношению к строчным было бы таким же, как в программах BB. Так что не надо про веб-дизайнеров и человеческое восприятие. А Вирту, прежде чем придумывать такой синтаксис, стоило ознакомиться с теоретическими наработками по данному вопросу (они есть).

Илья Ермаков писал(а):
2) От заглавного синтаксиса никуда не деться, т.к. стандарт языка. По сему подсветка синтаксиса таки излишней будет. Согласимся?


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

Илья Ермаков писал(а):
3) Заглавный сиснтаксис может показаться непривычным, я тоже сначала так думал. Но практика показывает совсем иное - воспринимается лучше. Это надо попробовать.


Возможно, после тренировки...

Илья Ермаков писал(а):
В том то и дело, что синтаксис не закрывает все остальное, а наоборот - отделен от него. КП - это первый язык, на котором я с удовльствием стал копаться в чужих исходниках.


Дык, где они эти исходники? ;) Все больше студенческие поделки с русскими идентификаторами ;) Да и сам BB мне до сих пор кажется этакой игрушкой - интересной одной лишь концепцией построения с нуля и дальнейшего расширения.

Илья Ермаков писал(а):
До этого - терпеть не мог. Попробуйте "погулять" по среде, перемещаясь от модуля к модулю простым выделением имени и щелчком в конт. меню.


Ненавижу мышь при навигации по исходникам ;) Это одна из причин, почему я не смог ужиться с билдерной IDE ;) С клавиатуры можно?

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/