Re[2]: Как запустить Блэкбокс и выполнить первую программу
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.11.04 11:56
Оценка: +1
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Как запустить Блэкбокс и выполнить первую программу...


А тебе не странно, что только для этого виликого творения кривых рук унжен туторила по запуску и первичному использованию?

ЗЫ

Прекратите эти попытки навязать в обучение это монструозное чудобище.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 12:00
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Все-таки у меня железные нервы
Автор: Mamut
Дата: 31.10.04


Прошу прощения за наезд.


M>

M>5 Почаще нажимать Ctrl+K! (компиляция)


А что такого? Это в Си++ время компиляции огромно, а в оберонах глазом моргнуть не успеешь.

Ctrl+K — компиляция
Ctrl+E — переход к следующей ошибке.

Так как компиляция практически мгновенная (человеком такой маленький интервал времени не воспринимается), то какая разница что нажимать Ctrl+K или Ctrl+E ? А если предыдущую ошибку исправил, но случайно внес другую ошибку, то Ctrl+K — ее сразу же покажет. Так что лучше жать на Ctrl+K.
Re[4]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 01.11.04 12:01
Оценка:
Здравствуйте, Mamut, Вы писали:

M>ХИТ СЕЗОНА


M>

M>Устраняйте самую первую ошибку — и сразу компилируйте снова, нажимая Ctrl+K


Это наследственная беда компиляторов паскаля.
Так было и в TP вплоть до 7 версии.
Связано с тем, что компилятор "учебно-тренировочный", а восстановление контекста после ошибки — дело нетривиальное.
Проще парсеру сразу выпасть, чем после спотыкания ехать дальше.
Перекуём баги на фичи!
Орден "За попытки полюбить Блэкбокс"
От: Mamut Швеция http://dmitriid.com
Дата: 01.11.04 12:13
Оценка: 31 (3) :))
Предлагаю наградить меня орденом "За попытки полюбить Блэкбокс" Третьей Степени с лентой и именным пистолетом

за здесь
Автор: Mamut
Дата: 29.10.04
, здесь
Автор: Mamut
Дата: 31.10.04
, здесь
Автор: Mamut
Дата: 01.11.04
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[5]: Как запустить Блэкбокс и выполнить первую программу
От: Mamut Швеция http://dmitriid.com
Дата: 01.11.04 12:13
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Так как компиляция практически мгновенная (человеком такой маленький интервал времени не воспринимается), то какая разница что нажимать Ctrl+K или Ctrl+E ? А если предыдущую ошибку исправил, но случайно внес другую ошибку, то Ctrl+K — ее сразу же покажет. Так что лучше жать на Ctrl+K.



Это я уже понял (здесь
Автор: Кодт
Дата: 01.11.04
). А как насчет всего остального? И также здесь
Автор: Mamut
Дата: 01.11.04
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


dmitriid.comGitHubLinkedIn
Re[5]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 01.11.04 12:17
Оценка: +3
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Так как компиляция практически мгновенная (человеком такой маленький интервал времени не воспринимается), то какая разница что нажимать Ctrl+K или Ctrl+E ? А если предыдущую ошибку исправил, но случайно внес другую ошибку, то Ctrl+K — ее сразу же покажет. Так что лучше жать на Ctrl+K.


Не смешите тапочки.
Я несколько лет программировал на TurboPascal 5.5 — 7. Причём делал не хелловорлды, а здоровенную программу.
Уверяю тебя, цена перекомпиляции тяп-за-ляпом в большом проекте может измеряться часами.
Достаточно, например, поменять интерфейсную часть в часто используемом модуле, чтобы пришлось подтягивать все остальные, каждый в ста местах.
Перекуём баги на фичи!
Re[5]: Как запустить Блэкбокс и выполнить первую программу
От: Kh_Oleg  
Дата: 01.11.04 12:29
Оценка:
Здравствуйте, Кодт, Вы писали:

M>>ХИТ СЕЗОНА

M>>

M>>Устраняйте самую первую ошибку — и сразу компилируйте снова, нажимая Ctrl+K


К>Это наследственная беда компиляторов паскаля.

К>Так было и в TP вплоть до 7 версии.
К>Связано с тем, что компилятор "учебно-тренировочный", а восстановление контекста после ошибки — дело нетривиальное.
К>Проще парсеру сразу выпасть, чем после спотыкания ехать дальше.

Если я не ошибаюсь, то, начиная с языка Modula-2, процедуры заканчиваются не
END;
, а
END ProcName;
именно для того, чтобы компилятор мог пропустить кусок кода, относящегося к данной процедуре, содержащей ошибку, и продолжить компиляцию дальше.

Насчет данной рекомендации точно не скажу как там с компиляторов в BlackBox'e, но не исключено, что это просто рекомендация в целях перестраховки. Надо просто проверить, сможет ли компилятор сообщить сразу о нескольких ошибках.

А вот, кстати, в своем реальном проекте на С++ я так и делаю: исправляю первую ошибку (если она не совсем уж тривиальная) и сразу компилирую снова, потому как фиг его знает, сколько мне выпало сообщений о реальных ошибках, а сколько — наведенные.
Re[6]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 13:09
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Не смешите тапочки.

К>Я несколько лет программировал на TurboPascal 5.5 — 7. Причём делал не хелловорлды, а здоровенную программу.
К>Уверяю тебя, цена перекомпиляции тяп-за-ляпом в большом проекте может измеряться часами.
К>Достаточно, например, поменять интерфейсную часть в часто используемом модуле, чтобы пришлось подтягивать все остальные, каждый в ста местах.


Во-первых, а при чем тут ТурбоПаскаль, если речь идет об оберонах?

Во-вторых, а что Вы, собственно, хотите если поменяли интерфейсную часть в часто используемом модуле? Разумеется Вам после этого надо все перекомпилировать, а как же еще-то?
Re[5]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 13:15
Оценка:
Здравствуйте, Кодт, Вы писали:

M>>

M>>Устраняйте самую первую ошибку — и сразу компилируйте снова, нажимая Ctrl+K

К>Это наследственная беда компиляторов паскаля.

К>Так было и в TP вплоть до 7 версии.


Сказака про белого бычка и про мочало, а не начать ли нам все с начала?

Вот линия Виртовских языков:

Паскаль (1970) ---> Модула-2 (1978) ---> Оберон (1985) ---> Оберон-2 (1992) ---> ...


ТурбоПаскаль — это творение фирмы Борланд. ТурбоПаскаль к Оберонам отношения не имеет.

Кстати, не известно почему Борланд сделала компилятор именно Паскаля, а не Модулы. Модула же лучше.
Re[7]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 01.11.04 13:22
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Во-первых, а при чем тут ТурбоПаскаль, если речь идет об оберонах?


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

СГ>Во-вторых, а что Вы, собственно, хотите если поменяли интерфейсную часть в часто используемом модуле? Разумеется Вам после этого надо все перекомпилировать, а как же еще-то?


А так, что в С я получу ошибки по всем файлам, на которых это отразилось, и смогу залпом поправить. На паскале же если там фигня в 100 местах, я 100 раз нажму.
Причём нужно заметить, что
1) языки С/С++ более затейливы грамматически, чем паскаль сотоварищи — однако же для них научились восстанавливать контекст после ошибок. Когда TP перешёл рубеж и из преимущественно учебной среды стал промышленной — т.е. Delphi — в нём эту фичу тоже быстренько прикрутили.
2) компиляторы С/С++ имеют регулировку — после какого числа ошибок в файле останавливаться. Слишком мало — неудобно для разработчика. Слишком много — есть шанс получить вагон мусора (из-за неточного восстановления контекста).
Перекуём баги на фичи!
Re[6]: Как запустить Блэкбокс и выполнить первую программу
От: Кодт Россия  
Дата: 01.11.04 13:24
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Сказака про белого бычка и про мочало, а не начать ли нам все с начала?


Вот и начинай. Сначала прочти, о чём я сказал, а потом уже реагируй. А то у тебя как спусковая кнопка: "Турбо" -> "к делу не относится".
Перекуём баги на фичи!
Re[8]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 13:47
Оценка:
Здравствуйте, Кодт, Вы писали:

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


СГ>>Во-первых, а при чем тут ТурбоПаскаль, если речь идет об оберонах?


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


Да-а-а, а еще значит говорите, что посмотрели BlackBox... Ничего Вы его не посмотрели, раз такое пишите. BlackBox выдает все ошибки, а не только первую.
Re[6]: Как запустить Блэкбокс и выполнить первую программу
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 13:50
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Насчет данной рекомендации точно не скажу как там с компиляторов в BlackBox'e, но не исключено, что это просто рекомендация в целях перестраховки. Надо просто проверить, сможет ли компилятор сообщить сразу о нескольких ошибках.


Разумеется, он сообщается сразу о всех ошибках.
Re[2]: Конкурс по Оберону!
От: bkat  
Дата: 01.11.04 14:59
Оценка: :))) :))) :))) :))) :)
Здравствуйте, Кодт, Вы писали:

К>А что нужно делать с так называемым сервиспаком?


С сервиспаком ничего делать не надо. Его нужно просто стереть.
BB ведь на Обероне написан?
Тогда багов там быть не может в принципе и сервиспаки не нужны по определению.
Re[9]: Как запустить Блэкбокс и выполнить первую программу
От: kavlad Россия http://www.wavesoft.ru
Дата: 01.11.04 15:01
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Да-а-а, а еще значит говорите, что посмотрели BlackBox... Ничего Вы его не посмотрели, раз такое пишите. BlackBox выдает все ошибки, а не только первую.


Сергей, простите, но не стоит так надрываться и с пеной у рта доказывать, что Oberon и т.п. имеют право на жизнь и т.д.
ИМХО, в нем заложены несколько иниые концепции, нежели в студии, делфи и пр. Да и не предназначен он для разработки Wibdows-приложений.
... По ушам лупит Сплин — Выход
Re: Конкурс по Оберону!
От: mister-AK Россия  
Дата: 01.11.04 15:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В общем, цель этого тэст-драйва получить максимальное количество впечатлений и поделиться оными в данной теме. За самое яркое и выразительное описаний своих эмоций будет поставлено неимоверное количество оценок.



Хм, а не скажешь ли мне... по идее — не офтоппик должно быть


Вот у меня пока нету даже демы VisualStudio2005 но когда я общаюсь с тем, что у меня есть для C# я чё то не нахожу примитивных возможностей — хождения в исходниках по именам как гиперссылкам; интеллисайнса, в котором выпадает не все подряд, а то что мне нужно; всяческих дебагерных фич, давно уже присутствующих у Борландов... что-то мне это напоминает выдвиннутое сравнение, только немного со стороны
То что у меня стоит и называется VS явно по-моему мнению уступает в ловкости рук, предлагаемой BDS2.0 (расшифрую — IDE Delphi8.Net)
Так что не все коту масленница чур RationalRose2010 для улучшения производительности труда не предлагать
Re: Ответ на вопросы
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.11.04 15:31
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Еще раз. Господа Оберонщики о понятии проект слышали?


BlackBox — это и есть один проект, или точнее сказать одна расширяемая модульная система. Хотите получить еще одну расширяемую модульную систему — скопируйте BlackBox в другую папку и расширяйте уже другими модулями. Впрочем, сам BlackBox.exe и некоторые общие модули копировать в отдельный каталог не обязательно, можно пользоваться механизмом вторичных директорий. Подробнее об этом на сайте info21 (там просто BlackBox.exe надо запустить с параметром "имя другого корневого каталога" и он будет работать с модулями находящимися в том каталоге, а если не будет находить там некоторых модулей, то будет искать их в своем главном каталоге, т.е. там где он сам находится. То есть общие модули можно держать в главном каталоге BlackBox-а, а свои "проекты" располагать во вторичных каталогах).


M>Оберон возвел класс в ранг модуля, но от необходимых классу атрибутов (public/private) он не отказался. Зато такое возведение требует от программиста знания всех full-qualified names для всех модулей/обьектов/компонентов/классов/свойств/полей в системе, что не есть гуд, когда система разрастается.


Как класс можно возвести в ранг модуля? Ерунда какая-то.
Модуль — это первичное понятие. Модуль является:

1) Единицей исполнения (нет никаких других исполняемых единиц кроме модуля)
2) Единицей компиляции (нельзя скомпилировать нечто размером меньше чем модуль)
3) Единицей инкапсуляции (только модуль может гарантировать НАСТОЯЩУЮ инкупсуляцию, инкапсуляция на уровне класса — сродни соглашению, так как взглянув на исходный код класса все его приватные члены сразу видно, а к (скомпилированному) модулю прилагается только символьный файл (хедер) в котором написано только то что всем остальным модулям видно, так что для того чтобы взломать инкапсуляцию модуля нужно будет его дизассемблером ковырять, а так просто ничего не увидишь).
4) Структурной единицей архитектуры программы (граф импорта модулей друг другом ацикличен, таким образом модули всегда иерархически организованы).
5) Самой крупной структурной единицей в языке программирования (весь код программы пишется внутри модулей)
6) Динамически загружается (и линкуется) во время работы программы (а, также, динамически выгружается)
7).....еще можно много чего понаписать...

*Еще модули маленькие. Я имею в виду следующее. Обычное средних размеров приложение как правило состоит не из одного единственного (исполняемого) модуля, а из нескольких десятков. В этом состоит разница между оберонистыми модулями и сборками в .NET или пакетами в Java. Одна дотнетовская сборка по размеру эквивалентна нескольким десяткам оберонистых модулей. Это нужно, по крайней мере, по двум причинам:

1) Большое количество модулей потом можно будет использовать в других приложениях. Один раз написанный модуль остается в системе навсегда расширяя ее.

2) Решается проблема сложности системы. Дело в том что график сложности системы имеет U-образную форму зависимости от размера структурной единицы:
^ Сложность внесения изменений
|
|
|  \                       /
|    \                  /
|      \              /
|        \          /
|          \      /
|            + - +
+--------------------------------------------->
             Грануляция системы (размер структурной единицы)

Если структурные единицы системы маленькие, значит между ними много связей, сложность системы растет вместе с ростом количества связей. Если структурные единицы системы крупные, то сложность системы растет вместе с ростом размера структурных единиц системы. Существует оптимум — когда размер структурной единицы системы еще не так велик, чтобы стать проблемой, а с другой стороны когда их количество еще не так велико чтобы запутаться в связях. Поэтому оберонистые модули гораздо мельче чем дотнетовская сборка, но гораздо больше чем один класс. Модуль содержит в себе несколько классов, а "проект" содержит в себе несколько десятков модулей.


M>Что делать при конфликте имен модулей?


Эта проблема решается только одним способом — давайте модулям разные имена. А Вы как думали? Кроме того, для упрощения работы с длинными именами в Component Pascal существуют псевдонимы имен модулей:
MODULE Компания1Подразделение1Проект1Система1Подсистема1Модуль1Версия1Ревизия1;

IMPORT StdLog, Services, Mmm := Компания2Подразделение2Проект2Система2Подсистема2Модуль2Версия2Ревизия2, 
       Nnn := Компания3Подразделение3Проект3Система3Подсистема3Модуль3Версия3Ревизия3;

 (* ... *)
BEGIN
  StdLog.String("Здравствуй Мир!");
  Mmm.DoSmth();
  Nnn.DoAnother();
END Компания1Подразделение1Проект1Система1Подсистема1Модуль1Версия1Ревизия1.

Mmm и Nnn — это псевдонимы модулей с длинным именем.

M>Что делать, если я хочу одну и ту же форму использовать разными модулями? Почему пропагандируется программирование от формы? Оставшиеся вопросы уже былм заданы в соседних ветках.


Понятие формы в BlackBox кардинальным образом отличается от понятия формы, например, в Delphi. Дело в том, что форма в Delphi — это экемпляр класса, и таких экземпляров можно наштамповать сколько угодно. Сам текст класса генерируется генератором кода в design-time. В БлэкБоксе форма — это не экземпляр класса и там нет никакого design-time. Форма — это настоящий "живой" объект в который динамически агрегированны другие объекты — контролы, текст, графика... Все эти объекты ПЕРСИСТЕНТНЫ (потомки от абстрактного типа Strores.Store) таким образом форма в БлэкБоксе сохраняется просто напросто в самый обычный оберон-документ (хранилище сериализованных объектов ссылающихся друг на друга произвольным образом). Другими словами форма — это объект, а не класс объектов. Не существует никакого класса форм. Если хотите заиметь еще одну точно такую же форму, то Вам надо ее КЛОНИРОВАТЬ. И это гораздо круче, чем иметь класс этой формы, так как разделение процесса разработки на design-time и run-time порочно, например в Смалтолке его тоже нет.
Re[2]: Ответ на вопросы
От: Зверёк Харьковский  
Дата: 01.11.04 15:44
Оценка: 1 (1)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>...разделение процесса разработки на design-time и run-time порочно, например в Смалтолке его тоже нет...

1. С этого, кстати, надо было начинать рассказывать об Обероне.
2. Это, как минимум, весьма спорное утверждение.

А дебуг — тоже порочен, кстати? То есть лично Вы согласны с этим утверждением?
сам слушаю и вам рекомендую: @winamp
FAQ — це мiй ай-кью!
Re[8]: Как запустить Блэкбокс и выполнить первую программу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.11.04 15:44
Оценка: 1 (1) +2
Здравствуйте, Кодт, Вы писали:

К>А так, что в С я получу ошибки по всем файлам, на которых это отразилось, и смогу залпом поправить. На паскале же если там фигня в 100 местах, я 100 раз нажму.


А рулез, как обычно, третий вариант. Ставим решарпер и наслаждаемся подсветкой большинства ошибок в рилтайме в процессе набора текста. Если БлекБокс так крут, то с примитивной грамматикой оберона могли бы без проблем такое сделать.
... << RSDN@Home 1.1.4 beta 3 rev. 219>>
AVK Blog
Re[2]: Ответ на вопросы
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.11.04 15:55
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>*Еще модули маленькие. Я имею в виду следующее. Обычное средних размеров приложение как правило состоит не из одного единственного (исполняемого) модуля, а из нескольких десятков. В этом состоит разница между оберонистыми модулями и сборками в .NET или пакетами в Java. Одна дотнетовская сборка по размеру эквивалентна нескольким десяткам оберонистых модулей. Это нужно, по крайней мере, по двум причинам:


1) Размер сборки в дотнете можно делать каким угодно. Хоть по сборке на класс. Вот только никто так не делает, потому что неудобно.
2) Package в джаве вобще чисто логическая сущность. Физически она не существует. Единицей хранения в джаве является класс, что все таки меньше чем модуль.

СГ>Эта проблема решается только одним способом — давайте модулям разные имена.


. А если два разных продукта используют одинаковый модуль?
... << RSDN@Home 1.1.4 beta 3 rev. 219>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.