Цитата Сообщение от CityAceE
Раньше на Спектруме я сталкивался с такой проблемой, что когда в голову приходила какая-то идея, то основную часть времени для её проверки тратилась на обвязку программы, интерфейс и т.д. У каждого автора нарабатывалась какая-то библиотека процедур, алгоритмов, заготовок и т.д., которыми автор пользовался при написании своих программ. На память сразу приходят программы Сергея Ханциса (кстати, не так давно Сергей зарегистрировался на этом форуме) Screen Manager и другие, названия которых я запамятовал. Программы Сергея были полезны, удобны и при этом внешне похожи между собой (как собственно и подавляющее большинство программ, написанных под Windows) из-за того, что в каждой своей программе автор использовал свои библиотеки процедур. Вспоминая график выхода программ Сергея, я предполагаю, что на написание каждой последующей программы у её автора уходило меньше времени, так как процедуры интерфейса были написаны и отлажены, а автор бросал свои главные усилия не на организацию интерфейса, а на логику работы самой программы. Помню потом в электронных изданиях были призывы делиться своими процедурами и создать некий банк таких процедур. Как я понимаю, эта идея по ряду причин так и не получила большого развития и заглохла. Позже я попробовал программировать на ассемблере под PalmOS. Это был мой первый опыт программирования не на Спектруме и под настоящую операционную систему. На Палме я увидел, что мне нет надобности самому рисовать окна, отслеживать нажатия на кнопки и т.д. - всё это делает за меня операционная система, а мне необходимо лишь вовремя вызвать нужные процедуры с требуемыми параметрами. Что и говорить - удобно! С другой стороны есть и такая категория людей, которые может быть и хотели что-то написать под Спектрум, но их пугает ассемблер и тот факт, что всё придётся делать самому и с нуля...
Откуда взялся этот стереотип "велосипеда" ? Если пишется !!!нормальная!!! программа одного и того же автора, то в ней повторяется лишь стиль, а не процедуры. Конечно, есть одинаковые процедуры, но их можно пересчитать по пальцам. Как правило ZX'ер пытается максимально ускорить свой код, а это значит, что лишний раз он не будет делать CALL, и простая процедура умножения может уменьшиться на один-два цикла, ради скорости. Если всё строить на готовых библиотеках, то в итоге код обростает торможением. После чего библиотека пригодна для написания "карт" или "минёров", и да же в них карты будут дёргаться или вообще просто появляться.

Может я в чём-то заблуждаюсь ? Сколько не писал программы на СИ, ПАС, ВАСИКе, - я постоянно сталкиваюсь, что все эти библиотеки не работают как нужно. То на другой версии винды чего-то не поддерживается, то через час что-то перекосится и процесс виснет. Одно дело, когда делаешь какой-нибудь конвертер, он в процессе переглючит, пользователь как всегда плюнет в экран, и перезапустит, а с вас никакого спроса, как и с автора библиотеки. А представьте себе, - делаешь прибор, пишешь софт, и всего-то соединяешь прибор по простому COM'у. Его ставят на завод, запускают бумагоделательную машину, и через час вдруг завис "дрюйвер" COM-PORT'а. И, соответственно завод больше не приобретёт прибор нашей компании. Вот так было, когда на нашей фирме работали программисты, закончившие институты и имеющие учёные степени. Сколько я не писал проектов, всегда всю обвязку делал сам, начиная от COM-PORT'а, кончая USB, ETHERNET, VIDEO, KEY и всё остальное ... Не было ни одного отказа ... И главное, не нужен лицензионный виндовс, не нужно платить всем подряд за использование !!!очень!!! не качественных компонентов и тех же SDK. И после этого вы говорите, что не нужно изобретать велосипед. Конечно, если делать "мышки(манипулятор)" или писать "смотрелку картинок" этого хватит. А более серьёзное ? Хотя каждую программу нужно писать на 100%, не смотря на то, что она делает.


Цитата Сообщение от CityAceE
А теперь я помечтаю...

"Я включаю свой Скорпион и вставляю в него дискету подписанную как ZX_SDK, а рядом с собой кладу стопку отпечатанных листов, имеющих аналогичный заголовок. Так-с... Ну что ж, сегодня пожалуй для разминки напишу текстовый вьювер... Итак, приступим... Грузим с дискетки ALASM... Так, готово.. Ну-ка, где тут у нас файлик MAIN.H? Есть, загрузили... Ага, вот в файлике и список инклудов... Так, в нашей программе клавиатуру опрашивать будем, так что INCLUDE "KEYS.H", оставляем, а вот работа со спрайтами сегодня не предвидится, так что строчку INCLUDE "SPRITES.H" прячем точкой с запятой, или нет, лучше сотрём, сэкономив место в исходнике. А для вывода текста мы будем использовать 64 и 40 символов в строке, так что INCLUDE "TEXT64" и INCLUDE "TEXT40" оставляем... Смотрим дальше... [ПРОШЛО НЕСКОЛЬКО МИНУТ] Ну вот, вроде бы все нужные процедуры отобраны... Перемещаемся ниже по MAIN.H... Ага, стоп, вот он главный цикл программы! Стек, пожалуй, поднимем чуть повыше... Так, с IM2 сегодня не работаем, так что этот блок отделяем точками с запятой... Эти несколько строк тоже удалим, так как в этом проекте они нам не потребуются... А сюда мы вставим вывод окна... Как там у нас называется эта процедура? Ну-ка откроем нашу распечатку... Ага, вот они процедуры отвечающие за вывод окон, а вот и нужная процедура WIN_DRAW с описанием вводных данных... Так, загружаем регистры, вставляем WIN_DRAW... [ПРОШЛО НЕСКОЛЬКО ЧАСОВ] Уф, ну что ж, отладка программы закончена... ждём минуточку, пока программа откомпилируется, скомпрессируется и к ней будет добавлен BASIC-загрузчик. Ну вот, у нас на диске программа, готовая к распространению..."
А для чего я писал свой компилятор? Он именно это и делает! Всё, что сверху описано, уже реализовано. Наработку библиотек - за вами. Но не нужно отбирать, можно описать процедуры так, что использовав любую из них в тексте, она автоматом добавится в код. Ну, про компрессию и готовый загрузчик я уже устал писать ... Правда компиляция происходит на ПиЦи, а не ZX’е, поскольку я уже устал на ZX’е писать прогу по кускам, каждый раз думая как бы для отладки сделать так, что бы не убить в памяти ассемблер. На своём языке я написал игру Wanderlust, занявшая вообще всю 128-ую память и потратил на это две недели. Сейчас пишу игру Surgical Fantasy. Если бы был удобный графический редактор, редактор фонтов, соответственно редактор текстовки под этот фонт, то уже давно бы закончил и этот проект. А так приходится писать самому, благо уже заканчиваю, а то руки чешутся от того, как хочется закончить игру.

Цитата Сообщение от CityAceE
Мне кажется, что этот форум - хорошее место для рождения и поддержки подобного проекта. Здесь на форуме присутствует достаточное количество людей, которые написали не одну добротную программу и каждый их них решал множество задач по созданию оболочки программы и т.д. и т.п. Этот опыт очень ценен!
Но, этот опыт привёл к разделению на тех, кто пишет в основном на библиотеках, и тех, кто пишет в основном на “велосипедах”. Я отношусь к тем, кто любит прилеплять реактивный двигатель к велосипеду. И мне для разработки нужно:

+ 1.00 Асм с:
+ 1.01 Пакером.
+ 1.02 Loader-Creator.
+ 1.03 Возможность работы с метками, которые будут в будущем.
+ 1.04 Возможностью запаковывать части кода, используя один из другого.
+ 1.05 Иметь плейер PT3 с возвратом на каком POS/LINE мы находимся.
- 2.00 Графический редактор с:
- 2.01 Редактирование изображения до 65536х512 пикселей.
- 2.02 Редактирование фонта до 256х256 пикселей каждый символ.
- 2.03 Редактирование спрайтов и возможность их разукрасить.
- 2.04 ГЛАВНОЕ – Редактирование двух экранных изображений.
- 3.00 Музыкальный редактор.
+ 4.00 Редактор текста для ASM’а

(+ Есть)
(- Нет)

Я знаю, что есть графический редактор, но я в них не могу получить нормальный, готовый к употреблению файл. А сидеть и придумывать способы как вырезать кусок изображения, превратить его в спрайты, а если ещё нужно сделать двух экранную, то вообще - один Бог в помощь. Поэтому в последней моей игре WanderLust, для спрайтов написан один конвертор, который настраивается и выдаёт полностью готовые спрайты, да ещё их запаковывает, и делает отдельным куском, который подгружается в страницу и автоматически используется в игре.
Музыкальный редактор, близкий к употребляемому - я видел только у Alone Coder’а (PT3) и BACA&LAVE (DMM). Остальное очень не удобное.


Цитата Сообщение от CityAceE
Здесь можно было бы создать список самых востребованных процедур по работе с клавиатурой, мышью, дисководом, жестким диском, памятью, часами, выводом текста, символов, спрайтов, всякого рода окон, кнопочек, чек-боксов и т.д. и т.п. Определиться с наиболее универсальными и удобными методами вызова этих процедур и хорошо их Основная идея: Создать здесь на форуме некий конструктор, состоящий из процедур, заготовок и документации, который поможет быстро создавать качественные программы.
Всяческие процедуры с мышками, FDD, HDD – хорошая идея. Хотя, например FDD. Тянет за собой обработку системных переменных. Так же менеджер памяти, а вдруг и это очень вероятно, что я захочу его поместить начиная с 23296, да бы была возможность выделять всю память до байтика. Ну и после всё это соединю, думаю, что библиотеки начнут ссориться. А вот если разбить каждую библиотеку на самые важные элементы, например FDD:
- Init System Vars
- Read TR
- Write TR
- и т. д.
Это дело, но всякие печати символов, часы, отображение курсоров, наложение спрайтов лично мной бы вряд ли использовалось. Разве что посмотреть как делают другие.

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

Я знаю, что далёк от стиля программирования, которым следуют большинство из тех, кто обсуждает эту тему, поэтому извиняюсь, что влез в разговор.