OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Октябрь, 2018 08:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Суббота, 22 Февраль, 2014 01:13 

Зарегистрирован: Понедельник, 23 Сентябрь, 2013 11:58
Сообщения: 16
Некая программа написана на нативном (не CLI) C++ в среде Visual Studio 2005. К ней надо сделать плагин. Возможно ли такое, и если да, то как? Какой язык для этого лучше использовать? У меня есть пример плагина на C++, но перспектива дописывать его на этом языке вгоняет меня в депрессняк. :cry:

Я точно знаю, что один из плагинов для этой программы сделан на языке Ruby (для этого сначала реализовали промежуточную DLL на C++, которая вызывается и из основной программы, и из скрипта на Ruby). Понятно, что так можно и на VBA написать, но хотелось бы нативно скомпилировать.

Платформа Windows 7+ 32-bit. Особых требований к языку нет. Меня бы и FreePascal устроил, но он криво DLL генерирует. А мне надо надежно. Не хочу потом ловить гейзенбаги и думать, куда утекает память. Может, стоит Modula-2 использовать? Я где-то слышал, что DLL лучше писать на языках без GC.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Февраль, 2014 07:24 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
viewtopic.php?f=30&t=1037
viewtopic.php?f=30&t=2205
viewtopic.php?f=30&t=2027

Те плагины, что попроще, сделаны без GC и даже без Runtime, а те, что посложнее, используют GC, так что примеры всего спектра возможностей есть в исходниках. См. также http://sourceforge.net/apps/mediawiki/n ... in_Central (поиск по строке "Alexander Iljin").

Целевая программа (для которой плагины) - Notepad++, написана на нативном C++ в Visual Studio.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Февраль, 2014 08:36 

Зарегистрирован: Понедельник, 23 Сентябрь, 2013 11:58
Сообщения: 16
Александр Ильин писал(а):
Те плагины, что попроще, сделаны без GC и даже без Runtime, а те, что посложнее, используют GC, так что примеры всего спектра возможностей есть в исходниках. См. также http://sourceforge.net/apps/mediawiki/n ... in_Central (поиск по строке "Alexander Iljin").

Целевая программа (для которой плагины) - Notepad++, написана на нативном C++ в Visual Studio.


Спасибо! Заодно решился вопрос, какой редактор лучше использовать. :)

Я посмотрел исходник Oberon-2 Lexer (пару файлов по диагонали) и заметил слово ASSERT. Это контрактное программирование? А юнит-тесты применяете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Февраль, 2014 18:13 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4485
Откуда: Россия, Орёл
См. blackbox15i21base/i21sys :
Код:
Code
Docu
Docu.Полезные сведения
Docu.Работа с DLL
Mod
Rsrc
Sym


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Февраль, 2014 22:27 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
kolesiko писал(а):
Я посмотрел исходник Oberon-2 Lexer (пару файлов по диагонали) и заметил слово ASSERT. Это контрактное программирование? А юнит-тесты применяете?
Я плохо представляю, что такое контрактное программирование. ASSERT'ами я часто пресекаю вызов публичных функций с некорректными параметрами, либо защищаюсь от собственных ошибок, когда плохо понимаю, что пишу, либо когда нужно выразить какое-то согласование между частями программы, которое не выражается на данном языке программирования. Это чтобы при изменении и расширении чего-либо в будущем не позабыть, на каких условиях работает уже имеющееся.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Февраль, 2014 23:05 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7858
Откуда: Троицк, Москва
Юнит-тесты это в модульной системе понятие ... ну, избыточное.

Для каждого модуля пишутся тесты, и всё.

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

Контрактное программирование -- тоже некое избыточное понятие.

Неконтрактное программирование -- это не программирование, а так ... чмо.

Для каждой процедуры есть пред- и пост-условия.
На всё втыкаются АССЕРТы на уровне инстинкта.

Я детишкам в самом начале логики показываю фрагмент из "Леона":

-- Проверь. Убедись, что это именно то, что тебе нужно.
-- Я тебе доверяю.
-- Не путай одно с другим, Леон!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 23 Февраль, 2014 23:56 

Зарегистрирован: Понедельник, 23 Сентябрь, 2013 11:58
Сообщения: 16
Александр Ильин писал(а):
Я плохо представляю, что такое контрактное программирование. ASSERT'ами я часто пресекаю вызов публичных функций с некорректными параметрами, либо защищаюсь от собственных ошибок, когда плохо понимаю, что пишу, либо когда нужно выразить какое-то согласование между частями программы, которое не выражается на данном языке программирования. Это чтобы при изменении и расширении чего-либо в будущем не позабыть, на каких условиях работает уже имеющееся.


Это оно и есть. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Февраль, 2014 15:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Задачей ASSERT является проверка данных параметров во время исполнения программы, в то время как проверкой типов параметров занимается компилятор на этапе компиляции модуля КП.
Info21 писал(а):
Юнит-тесты это в модульной системе понятие ... ну, избыточное.

Для каждого модуля пишутся тесты, и всё.

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

Контрактное программирование -- тоже некое избыточное понятие.

Неконтрактное программирование -- это не программирование, а так ... чмо.

Для каждой процедуры есть пред- и пост-условия.
На всё втыкаются АССЕРТы на уровне инстинкта.


Я детишкам в самом начале логики показываю фрагмент из "Леона":

-- Проверь. Убедись, что это именно то, что тебе нужно.
-- Я тебе доверяю.
-- Не путай одно с другим, Леон!

ASSERT и есть проверка соответствия контракту, при нарушении которого программа завершается нештатным образом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Февраль, 2014 20:11 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7858
Откуда: Троицк, Москва
Роман М. писал(а):
ASSERT и есть проверка соответствия контракту, при нарушении которого программа завершается нештатным образом.
Правда?! :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB