
Сообщение от
Vitamin
Значит за 4 месяца (время внедрения поддержки текстового формата) это полчеловека. Банально не долждался.
Говорю тебе ещё раз: поддержка экспорта в текст и импорта из текста в среде ББ, на которой базируется XDev, есть уже давно. И готовые подсистемы поддержки раскраски синтаксиса есть (как минимум 3), хоть и не встроены в базовый дистрибутив, так что моя вся работа была - прикрутить кодировку 1251 (да, знаю-знаю, это заслуживает всяческой критики, а надо UTF-8) и внедрить подсистему для раскраски в сборку XDev, маленько адаптировав выбранную мной готовую подсистему под новое ядро ББ 1.6, под котороге она не была заточена изначально.
Так что если уж перефразировать твоё "на дождался", то как минимум в "не больно-то и хотелось", согласен? 

Сообщение от
ZEK
попробуйте реализуйте вменяемый dependency injection в среде оберона, поломаетесь, придется лезть в компилер и среду исполнения, вот это убогость среды
Это гнусная лжа. :-) Не придётся лезть не в среду, ни в компилер. И вот почему.
Дело в том, что средства, достаточные для реализации dependency injection введены в первый Оберон (не только в систему, а в язык) около 25 лет назад, заметьте, когда не было ещё никаких яв с дотнетами. В Си и Паскале их тоже можно достичь, но только статически (путём использования указателей на процедуры/функции) или же средствами вышележащей среды исполнения - такими механизмами как динамические библиотеки, которые не являются частью языков Си и Паскаль, хотя и к Си, и Паскалю (Дельфи) они были прикручены потом навесными средствами; а такая докрутка влияет не самым положительным образом на сбалансированность средств языка и является костылём, который вам уже настолько примелькался, господа, что вы его не замечаете и считаете незаменимым средством в вашей работе.

Сообщение от
ZEK
Оберон весь состоит из подпорок недоделанных
Такое резкое высказывание неплохо бы проаргументировать несколькими примерами. В отношении Си и Паскаля - вот это чистейшего вида подпорки в языке:
Код:
extern "C" __declspec(dllexport) error WINAPI roseInit(const HWND hWnd);
или:
Код:
function RasSetEntryPropertiesW(lpszPhonebook, szEntry: PWideChar; lpbEntry: Pointer): Longint; stdcall; external 'rasapi32.dll' name 'RasSetEntryPropertiesW';
И Дельфи, и Си на сегодняшний день состоят из таких подпорок, но вот Оберон - совсем другое дело. Разумеется, в некоторых реализациях Оберона есть и [stdcall], но это не часть языка, а системное средство, широкое использование которого по всему коду ограничено (и это благо) - его можно использовать в системных модулях для связки с готовыми библиотеками. Но вернёмся к dependency injection. Перво-наперво я перепутал его с code injection который безусловно достижим в Оберон-среде.
Но после того как нам милостиво объяснили что это такое и мы поняли:

Сообщение от
Vitamin
Вместо прямого вызова каких-либо функций из кода зовутся функции посредника. А вот этот посредник (точнее, разные его реализации), уже и выполняет деятельность.
Например, ты пишешь выводилку списка файлов. Только если вместо прямого вызова методов библиотеки/winapi/posixapi будешь звать соответствующие методы посредника (обладающего специализированным протоколом, удобным для использования именно этой выводилке), то получится изоляция алгоритма (вывод списка файлов) от способа получения входных данных. И один и тот же кусок кода
у тебя используется и для перечисления файлов в папке и для перечисления файлов в архиве- ему пофиг на разницу если предоставляемый посредник соблюдает установленный протокол обмена.
В общем, полиморфизм во весь рост.
Это называется "мы придумали велосипед потому что плохо учили матчасть, но зато назвали его умным словом". И заметьте, Оберон, оставляя в чистоте концептуальную сторону вопроса предлагает нам решение, которое не требует многих мегабайт дотнета и явы-рантаймов (плюс всё, что к этому прилагается в виде обязательного лицензирования своей JVM и ласковых рук мс на юзерском горле), а ограничиваясь компактным ядром Оберон-среды исполнения (в ББ оно занимает около 30 кб кода). Оставим за бортом достоинства дотнетов, вместо этого сосредоточимся на их недостатках, которые вовсе не так уж безобидны и преодолимы.
Господа, а вы в курсе, что загрузчик модулей в ББ реализован именно описанным способом? И ему по барабану откуда грузить модуль - из файла .ocf, распаковывать из EXE (реализовано) или же загружать по сети в зашифрованном виде (предусмотрены слоты для расширений подобного рода). Или почему ББ называется расширяемой и компонентной системой?
Ещё пример из ББ. Files это работа с файлами. PackedFiles устроен также, но это работа с пакованными файлами. Переключиться между работой с обычными и пакованными файлами - строчка кода. HostFiles и HostPackedFiles - реализации. Пожалуйста, добавляйте свои собственные HostFilesAtDropBox или HostFilesAtYandexDisk, если угодно.
И ББ реализован так весь. Смотрите Files и HostFiles, Dialog и HostDialog. Вообще подсистема Host - это сплошной dependency injection со всеми его рулезностями, позволяет чуть ли не ОС приложению менять на ходу. Загружать, выгружать и переключать реализации в рантайме, иметь их миллион штук; идеально для плагинов и т.д. Всё - средствами Оберон-среды исполнения без вышележащих механизмов ОС типа динамических библиотек. Но что самое важное - всё достигнуто без привлечения дополнительных концептуальных наслоений в языке. Чтобы этого достичь - пришлось добавить в Оберон не __declspec(dllexport) и stdcall, а более практичные средства проектирования каркасов больших систем - атрибуты ABSTRACT, EMPTY, LIMITED и EXTENSIBLE всё тех же записей, которые и объекты, и структуры. Так из Оберона и получился Компонентный Паскаль.

Сообщение от
ZEK
а язык в отрыве от среды это конь в ваккуме, не говоря уже о отсуствии юнит тестирования
Угу, а ещё травка зеленеет и солнышко блестит. Всмысле, я не спорю. :-)

Сообщение от
ZEK
Если средство разработки не позволяют мне убедиться что изменив код процедуры я ничего не поломал, то такое средства идет лесом, ценю личное время (это как энтузиаст)
А тебя как энтузиаста не угнетает тот факт, что твой код помрёт вместе с ms, что не за горами?
Я как энтузиаст лучше буду искать способы независимой деятельности энтузиаста. Сегодня Оберон можно транслировать как в Си и Java, так и в байт-код .NET и JVM. Завтра будут другие платформы. Где дотнет и Java будут реализованы силами третьих лиц. А если нет? Если придумают что-то более другое? Придётся переписывать весь код. А то могу рассказать грустную историю о том как я учился 3 года программить под палмы, а они взяли да и сдохли. А вот Оберон развернётся и там, и заточить все свои разработки будет достойным (и весьма возможным) делом для энтузиастов.
Примеры? Ну хотя бы вот: http://norayr.arnet.am/weblog/2010/0...fach-portieren
И юнит-тестирование не такая уж мудрая штука, чтобы быть несовместимой с Оберонами. Или это повод чтобы переориентировать всю свою разработку под крылышко одной весьма сомнительной фирмы? И доверить ей успех своего бизнеса, своей деятельности и своей жизни. Чувствуете разницу? И я бы ставил вопрос именно так, а не как "вменяемый dependency injection [ | unit-тестирование ] крутая и незаменимая штука, без неё нельзя жить, а её нету в Оберонах". Подумаешь. Придумали как эмулировать одно API средствами другого. Т.е. изобрели эмулятор.
Воистину нет ничего нового под этим солнцем!