User Tag List

Страница 8 из 18 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 320

Тема: Библиотеки-модули-программы...

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эх

    пересилил я себя, в который раз причём

    Я витамина сразу понял а вот основная масса участников видимо не прониклась духом идеи - как говорят софисты "прежде чем отергать идею, надо проникнуть её духом"

    Витамин спросил - какова вообще идея?
    Я считаю что идея отличная, и ставлю за идею 5 баллов.

    Далее, что плохого есть в идее.
    Как уже отмечено инерция мышления и как итог - инерция в методиких создания программных продуктах на спекке. Но речь не об этом.

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

    Вот такая общая мысль.
    Каждый из нас сталкивался при написании своих программ с тем, что надо рисовать 1 единственный символ в заданном знакоместе из заданного шрифта (расположенного в памяти). Стандартное RST 8 кажется по-моему только на заре программирования использовали - каждый сейчас пользует для этого свой код. Даже в случае, если надо рисовать символ 8x8 точек (что справедливо далеко не всегда). Вот первый претендент - процедура прорисовки символов. (здесь не торопитесь писать "опровержение", потерпите и дочитатайте тред до конца). Вызов - в программе - на внешнюю точку Call Scr.PrintChar8x8 (первая часть имени функции обозначает его модуль - модуль Scr)

    Каждый из нас сталкивался с тем, что отсутствует эффективная процедура работы с диском (опять же стандартная #3D13 слишком медленнная, и даже имеющиеся в ней возможности порой значительно ограничены). Тут уж я исключаю такого рода проблемы как поддержка (полная) жёсткого диска, работа с расширенной файловой системой TRDOS Directory System и т.д. Поэтому второй претендет - бинарник для работы с носителями, в том числе с файлами. Вызов Disc.FileRead, Disc.SectorRead, Disc.SectorWrite. Кстати не факт, что даже те процедуры что сейчас есть для скачивания работают хорошо - я вот специально для себя писал очень хитрый дискожуйный процедур, который работает не посекторно а потреково, что уменьшает время решения разрешаемых ошибок чтения и уменьшает "головобуйство" дисководов, экономя их ресурс в том числе, но опять же не про это речь. Модуль - Disc.

    Модуль опроса клавиатуры.
    Не секрет, что клавиатурный менеджер висящий на прерываниях спекка опять же оставляет желать лучшего - нет буферизации нажатых символов, нет возможности (через него) определить нажатие функциональных клавиш - таких как SymShift, CapsShift; русскоязычная поддержка это вообще из области фантастики. KB.ReadKey - читает клавишу нажатую пользователем. KB.Clear - очищает буфер. Модуль соответственно - KB.

    Модуль рисования всеразличных рамок - Window. Window.Show - прорисовывает окошко. Тут даже может быть целая система, учитывающая взаимозакрывания окошек (т.е. когда окошко одно частично закрыто другим, а потом это заднее окошко всплывает).

    Модуль арифметических операций Arithm - работает с быстрой целочисленной арифметикой (скорость калькулятора ПЗУ SOS оставляет желать лучшего, хотя функционал там конечно богатый). Arithm.16mul16 - перемножает два 16битных числа. Arithm.16div16 - делает одно 16разрядное на другое.

    Модуль работы с памятью - RAM. RAM.ChangePh - смена страницы памяти на заданную физическую. RAM.ChangeLog - смена страницы памяти на заданную логическую.

    И вот, я хочу написать бут, хочу написать текстовый редактор, хочу написать вьюер, хочу написать игрушку. Что из этих процедур я буду использовать? Правильно - все из них. И тем не менее, в существующей среде каждая из программ использует свой воз и тележку - где хранится это всё добро, и мало того - по причине закрытости исходов, нежелания автора заниматься программой и т.д. и т.п. в программах есть глюки, которые (90%) являются следствием криво написанных перечисленных процедур. Т.е. битком забитый диск программами спекковский диск де факто повторяет себя почти на 90%. Кроме того, часто указанные процедуры цепляются к тексту в виде некоего дополнения к каждой из запускаемых программ - в итоге и без того ограниченное количество допустимых файл-ячеек в ТРДОС используется малоэффективно.

    И теперь смотрим как это может быть - на диске лежит 1 pak файл, лежит 1 boot.B и кусочек кода к нему и лежат куча стартеров - файлов скажем с расширением R (взято произвольно, кстати они тоже могут быть в виде одного файла, и вообще здесь файловая структура не так критична). Эти стартеры могут быть и бейсик программами и просто кодом - это не так важно. Важно, что boot.b загрузит при старте линковщик (или компилятор если угодно), который будет уже работать с лежащими в pak файле указанными модулями.
    Хочется подчеркнуть такой немаловажный с моей точки зрения момент - модули фактически являются законченным машинным под Z80 кодом с той лишь разницей, что он сопровождается заголовком релокации для того, чтобы можно было склеить эти модули с головной программой. Впрочем, лучше почитать документацию к модулям и станет понятно что обвинения в писюканстве и амижстве здесь бессмысленные.
    И вот, запускаю я свой излюбленный вьюер - и что же? фактически, загрузится МОЯ логика реализованная в коде Z80 - мой код (назову это индивидуальный код) - т.е. только то, что в общем то и надо было написать для того чтобы куча библиотек превратилась в вьюер [основная масса существующего программного зоопарка несовершенна по причинами того, что кодер реализовав свою логику, которая на самом деле является изюминкой программы должен ещё и написать процедуры для отработки указанных действий - работы с дисками, клавиатурой, арифсетика, память и т.д.] - код будет просто дёргать нужные функции и я не буду задумываться о реализации универсального драйвера памяти (кроме случая когда он будет для меня слишком медленный, но это около 1% случаев всего кодописания), я не буду задумываться куда мне обратиться за опросом клавиатуры, я не буду задумываться даже на каком устройстве я сейчас работаю - потому что драйвер уже это сделает, потому что он включен в программу - ну и т.д.

    Теперь, нажал я резет. Надоел мне вьюер, я захотел текст понабирать - и всё то же самое - загрузился только МОЙ индивидуальный код и все остальные модули подхватились сами.

    Кстати тут очень интересный вариант, что модули будут лежать даже не на самом диске, а скажем на ЖД, или например во втором дисководе будет лежать диск с модулями - т.е. даже отпадёт необходимость на конечный диск писать библиотеки.

    Общая мысль витамина такая - за каждой из программ тянется огромный шлейф повторно написанных процедур (вот уж действительно пора покончить с изобретением велика), которые можно и нужно использовать в стандартном виде и таким образом подтягивать и увеличивать общую эффективность программо-производства.

    Напоследок хочу сравнить два подхода - которые как мне кажется в некотором смысле конкурирующие - 1) когда имеются ИСХОДНИКИ всех используемых процедур и в процессе компиляции всё собирается в один конечный файл 2) когда имеется модульная структура и фактически компилируется только индивидуальный код.

    1) возможность расширения 100% за счёт стороннего кода; возможность подмены исходных возможно глючных библиотек - только при перекомпиляции всего кода; количество необходимых файлов (в килобайтах и в штуках) - большое
    2) возможность расширения - отсутствует, это готовый код - только при перекомпиляции; возможность подмены библиотек - 100% за счёт модульной организации; количество необходимых файлоы (в штуках и килобайтах) - невелико.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    04.09.2006
    Адрес
    Краснодар
    Сообщений
    58
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    И вот, я хочу написать бут, хочу написать текстовый редактор, хочу написать вьюер, хочу написать игрушку. Что из этих процедур я буду использовать? Правильно - все из них.
    Скажите, а что вы будете использовать, если вы захотите написать 50fps вьювер, игрушку с выводом спрайтов через стек и кучей 256b-aligned таблиц, мультиколорную или чанковую дему, наконец? Ваш подход - опять же отдаёт писизмом, он не позволяет на СИЛЬНО ОГРАНИЧЕННЫХ ресурсах Спектрума делать действительно быстрые и крутые вещи. Если только лишь тошнить стандартными процедурами уровня инфоркома (помните, были ещё книжки - 'как написать игру на ассемблере' или 'динамическая графика') с кучей заморочек насчёт линковки, ооп и проч. пурги - то и получатся тошные программы - медленные, неинтересные.

    Общая мысль витамина такая - за каждой из программ тянется огромный шлейф повторно написанных процедур (вот уж действительно пора покончить с изобретением велика), которые можно и нужно использовать в стандартном виде и таким образом подтягивать и увеличивать общую эффективность программо-производства.
    За каждой из программ тянется шлейф похожих (на процедуры в других программах) процедур, и если это не те программы, от которых тошнит, а реально быстрые вещи, то каждая процедура вылизана десятки раз и адаптирована именно под конкретный случай применения. Зачем тут некие стандартные библиотеки (модули - называйте, как хотите) с 'swiss-knife type'-процедурами на все случаи жизни, с обработкой всех возможных ситуаций и тонной вариантов действий?
    Последний раз редактировалось yoko_ono; 17.10.2006 в 02:19.

  4. #3

    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin
    сложна имхо реализация... смещения только последовательно и плясать от адреса возврата
    Имеется ввиду, нужен синтаксис для сигнатуры.

    Технология использования таких аргументов хорошо отработана. Например:
    Код:
    EX (SP),HL
    LD A,(HL)
    INC HL
    LD C,(HL)
    INC HL
    LD B,(HL)
    INC HL
    EX (SP),HL
    Даже более привлекательно, чем ковыряться в стеке через индексные регистры.
    Цитата Сообщение от Vitamin
    Без этой директивы данная строчка не будет интерпретироваться как начало процедуры. Потому как у тебя без специального компилятора, умеющего разбирать теги в комментах символические имена генериться не будут
    С другой стороны, можно вспомнить о необходимости постепенной миграции со статической компононовки на динамическую.

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

    Код на макросах ALASM зависит от ALASM, который не всем нравится. И лишь макросами всё равно не выкрутиться. Например, хотелось бы выражения от импортированных символов, которые сохранялись бы в компилированных модулях и вычислялись во время компоновки (опять вспоминаем обратную польскую запись в iS-DOS).

  5. #4

    Регистрация
    04.09.2006
    Адрес
    Краснодар
    Сообщений
    58
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    Технология использования таких аргументов хорошо отработана. Например:
    Код:
    EX (SP),HL
    LD A,(HL)
    INC HL
    LD C,(HL)
    INC HL
    LD B,(HL)
    INC HL
    EX (SP),HL
    Даже более привлекательно, чем ковыряться в стеке через индексные регистры.
    Это технология чтения аргументов, 'вшитых' в машинный код, т.е. неизменяемых. И опять же, чтения в регистры, а не использования. Для комфортного их использования (несколько раз и в нужные моменты) их придётся переложить в память, по IX/IY ли, в абсолютную ли (по адресу). Немаловажно и то, что такие аргументы (вшитые в код) затрудняют отладку программы (не ясно, сколько таких аргументов идёт после CALL и когда они кончаются и начинается дальше код, к тому же дизассемблер воспримет их как код, выдав бессмысленные команды).

  6. #5

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    Имеется ввиду, нужен синтаксис для сигнатуры.
    Нужен- сделаем. Ничего не теряем, в общем случае.

    Цитата Сообщение от captain cobalt
    Код с сигнатурой в комментарии можно компилировать прямо сейчас, в любом ассемблере (после токенизации). То есть сию секунду можно нарабатывать код. Параллельно можно разрабатывать спец компилятор и документатор.
    Что есть токенизация? Дополнительный проход некой утилитой? А ее нету. И пересадить программистов под новый, пока не существующий компилятор менее реально, чем пересадить всех под существующий аласм.
    Тем более, макросы можно портировать под любой более-менее серьезный ассемблер. А для прочих "игрушечных" уж ничего не получится...

    Цитата Сообщение от captain cobalt
    Надо выйти из вьюера. Динамический компоновщик и модули останутся в памяти.
    Загрузить текстовый редактор. Он будет использовать модули уже находящиеся в памяти.
    Смотри на вещи шире. Предполагаемый подход твоей хотелки не отрицает. Поясню. Предположим, есть некий суровый модуль SYSTEM, который содержит функции Exit и LoadLibrary. В простейшем случае первая функция будет выходом в дос, а вторая- просто загрузкой файла. Подменяем этот модуль на свой и _автоматически_ получаем возможность выхода в некую оболочку (от RC до ОС) и загрузку модулей с кешированием.

    Цитата Сообщение от captain cobalt
    Возможность расширения - за счёт добавления модулей.
    Как??? Как программа на этапе выполнения может расширить свой функционал за счет дополнительных модулей, если она про них ни сном ни духом???

    Цитата Сообщение от GriV
    какие уже (в настоящее время) есть вещи так или иначе связанные с модульной организацией (полный список, включая документацию). Что нужно чтобы сие стало "скорее живым, нежели мёртвым"?
    Первая стабильная версия библиотеки: http://zxdocs.fatal.ru/coding/module.zip Уже не хватает возможностей, планирую расширять.

    Цитата Сообщение от yoko_ono
    Уважаемый captain cobalt, скажите, вы вживую видели 'подход библиотек Амиги'? Я что-то сомневаюсь... Вы вон давеча ажно драйвер памяти аласма записали в ООП или куда там. Признайтесь, вы даже его в глаза не видели?!
    Я, конечно, дико извиняюсь, товарищ, но на все высказанные просьбы рассказать, в чем же есть круть несусветная амиги были получены однообразные ответы типа "смотрите libman, там все". Ну посмотрели, сделали выводы на основе неполной (уж сколько было) информации.

  7. #6

    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin
    Я, конечно, дико извиняюсь, товарищ, но на все высказанные просьбы рассказать, в чем же есть круть несусветная амиги были получены однообразные ответы типа "смотрите libman, там все". Ну посмотрели, сделали выводы на основе неполной (уж сколько было) информации.
    Ну во первых, вы девушек видели? С сисями такие? Они никак не товарищи, скорее подруги (amiga по испански . Во вторых, ну сколько можно, товарищ Витамин С? Ну стормозили вы разок, не поняли, что я вам сказал, дык зачем на себя так долго дуться? простите себя уж! =)
    Для того, чтобы объяснить вам - у ВАС должен присутствовать интерес, коего у вас нет. Во вторых объем информации не может быть умещен на данном форуме. Вам проеще скачать эмуль амиги и с нуля все исследовать самому - зацЕните. Обкакаете пц сразуже (не во всех отношениях кнешно8).
    Я понимаю, что вам трудно все воспринять, но почитайте это (смотрю модеры тщательно удаляют все нужное?)
    http://www.totalamiga.org/pdf/totalamiga_19.pdf
    страницы 24-26. срочно! =)
    Последний раз редактировалось acidrain; 17.10.2006 в 16:37.

  8. #7

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от acidrain
    Ну во первых, вы девушек видели? С сисями такие? Они никак не товарищи, скорее подруги (amiga по испански . Во вторых, ну сколько можно, товарищ Витамин С? Ну стормозили вы разок, не поняли, что я вам сказал, дык зачем на себя так долго дуться? простите себя уж! =)
    Когда я обращаюсь к девушкам "мадам", никто не обижается и не считает себя "французской шлюшкой", так что я перешел на сугубо нейтральный тон.
    И на себя я не дуюсь, я вообще ни на кого не дуюсь долго- надоедает быстро %)
    Я конечно понимаю, что обидел ее просьбой привести подтверждение своим словам, но, следует заметить, мы тут постоянно друг друга так обижаем, а с тобой лично так через пост прям %))

  9. #8

    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin
    мы тут постоянно друг друга так обижаем, а с тобой лично так через пост прям
    да не, ты меня не обижал =) читай пост №217 еше раз, ок? =)
    http://amigasc.nm.ru

    Free coder and hardwareman
    Amiga addicted

  10. #9

    Регистрация
    14.01.2005
    Адрес
    N.Novgorod
    Сообщений
    803
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от acidrain
    Я понимаю, что вам трудно все воспринять, но почитайте это (смотрю модеры тщательно удаляют все нужное?)
    http://www.totalamiga.org/pdf/totalamiga_19.pdf
    страницы 24-26. срочно! =)
    пока злобные модеры не потерли, бросился читать... если в двух словах, то очень похоже на COM , только менее гибкое поскольку в runtime нельзя узнать список интерфейсов поддерживаемых библиотекой и похоже список функций для конкретного интерфейса жестко прошит в header'ах. хотя на основании только этой статьи утверждать не буду.

    расстраивает, то что даже для использования базовой функциональности (Intuition - это GUI? я не ошибся?) приходится делать кучу телодвижений:
    1. открыть либу
    2. получить интерфейс

    попользоваться...

    3. отдать интерфейс
    4. закрыть либу

    структура самой программы напоминает то что рекомендовала MS во времена Windows 3.11, тот же цикл ожидания сообщений, тот же разлапистый switch-case внутри

    зы: только без обид пожалуйста, сами ссылку предложили

  11. #10

    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от elf/2
    структура самой программы напоминает то что рекомендовала MS во времена Windows 3.11, тот же цикл ожидания сообщений, тот же разлапистый switch-case внутри
    Не знаю, как там с виндовз - я в виндовз (из вредности и пристрастия к амиге и спеку) никогда не кодил (не считая пару сишных прог для моего покетпц).
    То, что в этой статье написано - справедливо для ОС4, а мы обсуждаем ОС3.9. тут несколько иначе (кстати в статье об этом сказанно). Как там хеадерами и прописанными ифейсами - хз, не кодил. Но т.к. уже модуль какой то настряпан автором треда - то думаю обсуждение не уместно.
    Давайте немного отдалимся от ооп и современных методах прогинга и пойдем старым, дедовским способом?
    Сначала я воспринял предложение Витамина так, что будет некий типа бут, который займется загрузкой либл и прог и их распределением в памяти (то, что я делал на спеке, до окончания универа - после я забросил сие велеколепное дело). Посему посчитал абсурдным линковку и тем более запрос ифейсов и прочее. Разве не разумнее иметь либлы на диске и всего 2-3 открытых для прог в один момент времени. Т.к. о многозадачности не шло речи, то распределение памяти, упраление открытием-закрытием либл вполне мог на себя загрузчик. Одна либла - графический интерфейс (ГУИ), графическая либла (? не вижу необходимости для спека). Возможно математическая либла. Что еще может понадобиться? Управление клавой? Мышью? Все это в ехес (керналь-загрузчик). Итого, мы имеем реально 1 либлу для прог.
    Выход из проги ессно в бут (или что там будет). Ествественно все это обрастет со временем. больше никаких изысков.
    Для программера будет еще проще - список входов в инклудах(.h, .i) и autodoc's. Единственное что - релокация, но с этим справится загрузчик и прога пост-компилятора для создания таблицы релокации.
    Пока все, пора бежать
    http://amigasc.nm.ru

    Free coder and hardwareman
    Amiga addicted

Страница 8 из 18 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 9
    Последнее: 10.11.2024, 08:26
  2. Управление эмулятором из zx-программы
    от Spectre в разделе Эмуляторы
    Ответов: 42
    Последнее: 29.08.2006, 12:58
  3. Кто может помочь в создании программы
    от Лебедев в разделе Люди
    Ответов: 9
    Последнее: 22.07.2006, 09:41
  4. Программы для модемов
    от p@lex в разделе Софт
    Ответов: 21
    Последнее: 11.02.2006, 21:36

Ваши права

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