Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2016, 14:08   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Структура программной единицы

Хочу реализовать подключение программных модулей, взяв за основу паскалевские юниты. Представлять программу частями:
Параметры - там подключать юниты, длл-ки, может еще чего (типа директивы работы, например, указание диалекта, как в Racket).
Интерфейс - там показывать все функции и типы доступные для других юнитов. Пока под вопросом - юнит будет позволять вложенные функции.
Реализация - собственно описания самих функций.

Какие есть идеи и предложения?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2016, 14:45   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Чем принципиальное отличие от программ с системой плагинов?
rpy3uH вне форума Ответить с цитированием
Старый 31.05.2016, 14:56   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Чем принципиальное отличие от программ с системой плагинов?
Нет такого отличия в данном случае. Просто хочу проработать четкую и понятную структуру, чтобы не возникало неоднозначностей или не стало запутанным как для программиста, так и для транслятора. И так и хочу плагинами расширять сам язык с помощью библиотек (длл-ки, so).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 31.05.2016 в 15:01.
Utkin вне форума Ответить с цитированием
Старый 31.05.2016, 15:02   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Нет такого отличия в данном случае. Просто хочу проработать четкую и понятную структуру, чтобы не возникало неоднозначностей или не стало запутанным как для программиста, так и для транслятора. И так и хочу плагинами расширять сам язык с помощью библиотек (длл-ки, so).
Надо бинарики распространять или исходники таким способом?
rpy3uH вне форума Ответить с цитированием
Старый 31.05.2016, 15:07   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Это интерпретатор. В одном исходнике все пихать утомительно, потому там будет ссылка на другие исходники. И второе - чтобы язык развивался и мог решать задачи, изначально не предусмотренные, предполагается подключать системные библиотеки (то есть бинарники). Для программиста подключение библиотеки (бинарника) будет означать появление новых встроенных в язык функций. Ну например в Паскале по дефолту коннектится System.pas. А во Free Pascal это не просто дань традции, а изменение режима работы компилятора.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2016, 15:10   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

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

Последний раз редактировалось rpy3uH; 31.05.2016 в 15:15.
rpy3uH вне форума Ответить с цитированием
Старый 31.05.2016, 15:21   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я хочу просто библиотеку. Неважно на каком языке. Конечно стандарт какой-то надо, но язык не принципиален для бинарника.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2016, 15:47   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Какие есть идеи и предложения?
Можете глянуть на JNI, там именно это и сделано.
waleri вне форума Ответить с цитированием
Старый 31.05.2016, 15:55   #9
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Нет языка лучше Си#. Посмотрите как там сделано.

Паскалевские юниты хорошие. Но как только вы начинаете работать с интерфейсами, то появляется вопрос. Как сделать интерфейсы в разных модулях?
Паскаль, Delphi запрещают циклические ссылки на интерфейсные отрывки.
Из-за этого недостатка приходятся разные классы с одним общим интерфейсом кидать в один модуль. Например, откройте модуль Classes.


В Си это решается при помощи NameSpace . Но! Это противоположная крайность. Невозможно поменять namespace простым переименованием модуля. Из-за чего вся ценность namespace теряется! Если вдруг у разных разработчиков совпадут названия namespace, то вы очень долго будете править исходники.

Только вчера вылез из недр Tasm. Так вот там есть такая вещь как сегменты и группы сегментов. Так вот у сегментов может быть общий псевдоним. Пишется он после public
Код:
code SEGMENT PARA PUBLIC '_Text' use32.
'code' - позывной сегмента
'_Text' - его псевдоним.

А вот сборка сегментов из разных модулей можно управлять через групповой сегмент. Более лучше это сделано ilink (инкрементный сборщик) там можно управлять тем какие сегменты(модули) с чем группировать. Правда пока не нашел как diff'ы делать. Т.е. ручного труда прибавляется не мало.


PS.
Цитата:
Какие есть идеи и предложения?
Предлагаю, бросить изобретать свой велосипед компилятор/траслятор/интерператор. Уж больно много времени на это надо.

PPS. А вы свой компилятор делать не пробовали?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 31.05.2016, 16:00   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Предлагаю, бросить изобретать свой велосипед компилятор/траслятор/интерператор. Уж больно много времени на это надо.
Но мы ведь не ищем легких путей . И вообще должно быть какое-то хобби иначе совсем плесенью порастешь и быт заест.
Цитата:
Можете глянуть на JNI, там именно это и сделано.
Спасибо почитаю.
Цитата:
Нет языка лучше Си#. Посмотрите как там сделано.
А как там сделано? Я прогал как-то на c#, но особого значения мироустройству юнитов никогда внимания не придавал. Мне всегда библиотеки классов там привлекали.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация программной части доски объявлений fronde Фриланс 0 20.05.2016 18:18
Требуется сррочная помошь по Delphy и программной инженерии Stink5 Фриланс 1 14.05.2012 10:08
Работа с программной средой Visual Basic Пяtnышк0 Помощь студентам 0 18.04.2012 18:39
Проблема при программной вставке столбца makfromkz Microsoft Office Excel 2 10.11.2011 09:32
Единый Стандарт Программной Документации Izhic Обсуждение статей 1 02.11.2009 21:54