Здравствуйте, LaptevVV, Вы писали:
LVV>Дык вот в Компонентном паскале нет ни статических методов, ни статических классов, ни глобальных переменных — и нормально живут... LVV>Ибо МОДУЛИ!
Остается выяснить чем модуль отличается от "статического" класса в котором все данные и методы статические.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
П>Да не, извратиться-то всегда как-нибудь можно. Вопрос только — зачем?
static — это лишь мат. концепция.
реальный мир — все равно полностью instance.
вся из себя static-функция завернута в instance-библиотеку, которая живет внутри instance-программы, которая крутится на instance-компьютере.
соответственно, язык в котором есть только instance-методы и свойства — это способ для исследования как описывать реальный мир, который весь из себя instance.
Здравствуйте, Undying, Вы писали:
U>Здравствуйте, Фанатик, Вы писали:
Ф>>Дотнетовский string.Format? Если да, то:
U>Т.е. на практике это будет выглядитеь так:
U>
U>"Произошла непредвиденная ошибка ".Format("'{0}'. Программа будет перезапущена", error.Message);
U>
U>Такой код это точно не извращение?
На практике это будет выглядить так: "Произошла непредвиденная ошибка {0}".Fmt(error.Message); Очень удобно, кстати. У меня такой экстеншн есть.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, LaptevVV, Вы писали:
LVV>>Дык вот в Компонентном паскале нет ни статических методов, ни статических классов, ни глобальных переменных — и нормально живут... LVV>>Ибо МОДУЛИ! WH>Остается выяснить чем модуль отличается от "статического" класса в котором все данные и методы статические.
Тем, что нет лишних сущностей: статические, не статические. Все — одинаковое...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Тем, что нет лишних сущностей: статические, не статические. Все — одинаковое...
Лишняя сущьность это модуль.
Он не нужен.
Статические переменные тоже не нужны. Я бы даже сказал они вредны.
Переменные модуля ничем не отличаются от статических переменных.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, LaptevVV, Вы писали:
LVV>Дык вот в Компонентном паскале нет ни статических методов, ни статических классов, ни глобальных переменных — и нормально живут...
Явный троллинг, но таки отвечу. Компонентный паскаль никому не нужен. Никто с ним не "живёт". Мертвы эти технологические изыски прошлого века.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Фанатик, Вы писали:
Ф>Здравствуйте, LaptevVV, Вы писали:
LVV>>Дык вот в Компонентном паскале нет ни статических методов, ни статических классов, ни глобальных переменных — и нормально живут...
Ф>Явный троллинг, но таки отвечу. Компонентный паскаль никому не нужен. Никто с ним не "живёт". Мертвы эти технологические изыски прошлого века.
Понятия не имеете — постыдились бы прилюдно свою некомпетентность выставлять...
КП — живее всех живых и реально используется...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, LaptevVV, Вы писали:
LVV>>Тем, что нет лишних сущностей: статические, не статические. Все — одинаковое... WH>Лишняя сущьность это модуль. WH>Он не нужен.
Э, нет.
Компонентное программирование — на модулях основано...
И это — гораздо лучшая сущность, чем, например COM-объект. WH>Статические переменные тоже не нужны. Я бы даже сказал они вредны. WH>Переменные модуля ничем не отличаются от статических переменных.
Это да.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Компонентное программирование — на модулях основано... LVV>И это — гораздо лучшая сущность, чем, например COM-объект.
Если выражаться в терминах COM то модуль это синглетон с одним интерфейсом.
И я упроно не понимаю чем это лучше.
Особенно учитывая то что я Имею Мнение Хрен Оспоришь что синглетоны это такое же зло как глобальные переменные и должны умереть.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, LaptevVV, Вы писали:
LVV>>Компонентное программирование — на модулях основано... LVV>>И это — гораздо лучшая сущность, чем, например COM-объект. WH>Если выражаться в терминах COM то модуль это синглетон с одним интерфейсом. WH>И я упроно не понимаю чем это лучше. WH>Особенно учитывая то что я Имею Мнение Хрен Оспоришь что синглетоны это такое же зло как глобальные переменные и должны умереть.
Ну, тогда мы квиты. У меня — такое аналогичное ИМХО, что модули — это хорошо.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, тогда мы квиты. У меня — такое аналогичное ИМХО, что модули — это хорошо.
Переменная модуля == глобальная переменная.
Другими словами глобальные переменные это хорошо?
А ведь глобальные переменные не только создают проблемы со связностью программы но и проблемы с безопастностью, проблемы и распараллеливанием, проблемы с определением чистоты функци,...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, LaptevVV, Вы писали:
LVV>>Ну, тогда мы квиты. У меня — такое аналогичное ИМХО, что модули — это хорошо. WH>Переменная модуля == глобальная переменная. WH>Другими словами глобальные переменные это хорошо? WH>А ведь глобальные переменные не только создают проблемы со связностью программы но и проблемы с безопастностью, проблемы и распараллеливанием, проблемы с определением чистоты функци,...
Переменная модуля != глобальной переменной. Переменная модуля — локальная переменная модуля.
Может быть открыта публично. Но необязательно.
Ежели открываешь — то и следи, голубчик, за корректностью.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Фанатик, Вы писали:
Ф>Тут вот неожиданно подумалось об ООП доведённом до абсурда. Ф>Что если в некоем императивном языке не будет возможности описывать функции, статические классы, статические методы, глобаные переменные (вне определения класса). Ф>Сильно это усложнит жизнь?
Нисколько не усложнит. Нет принципиальных отличий между статическим и нестатическим, разница лишь в синтаксисе определения и доступа.
Но если ты думаешь, что проблемы, вызванные глобальными переменными можно устранить, убрав глобальные переменные, тебя ждет разочарование.
Здравствуйте, LaptevVV, Вы писали:
LVV>Переменная модуля != глобальной переменной. Переменная модуля — локальная переменная модуля. LVV>Может быть открыта публично. Но необязательно. LVV>Ежели открываешь — то и следи, голубчик, за корректностью.
Ты не понимаешь.
Единственная проблема которую решает инкапсуляция это несогласованное изменение переменной.
Все остальные проблемы остаются.
Взять например процедуру открытия файла так как она реализованы в библиотеках большинства языков.
Сигнатуры и имена могут быть разными но есть одно общее: процедуру можно вызвать в любом месте программы.
В результате чего любой код исполняемый в программе автоматически получает все привилегии процесса.
Мелкософты чтобы бороться с этим в .НЕТ сотворили жуткого монстра по имени code access security который при вызове "опасных методов" начинает сканировать стек потока чтобы посмотреть нет ли там кода которому мы не доверяем.
А все по тому что у нас есть глобальный доступ к объекту "файловая система". А то что добраться к нему можно только через определенные процедуры ничего не меняет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Кодёнок, Вы писали:
Кё>Но если ты думаешь, что проблемы, вызванные глобальными переменными можно устранить, убрав глобальные переменные, тебя ждет разочарование.
Обосновать можешь?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн