---------------------------------------------------------------------- Штрихи к портрету Микроперсонального Компьютера (МК) - глубоко внутри. Категория: для специалистов. ---------------------------------------------------------------------- 1. Виртуальные файлы или как обмениваться МК-данными? Рассмотрим работу нескольких МК в составе одной ДС. У каждого МК внутри есть две специальные (и возможно, совсем небольшие) буферные области памяти для обмена данными. Это in- и out-память. In-память работает в режиме "чтение-запись" снаружи в МК и "только чтение" внутри МК. Out-память работает в режиме "только чтение" из МК наружу и "чтение- запись" внутри МК. Т.о. in-память заполняется данными снаружи, а out-память - изнутри МК. Данные представляются в виде файлов специальных МК-форматов. В режиме работы "все-со-всеми" ДС-программа копирует эти файлы данных из out-памяти каждого МК в in-память всех остальных МК. Однако копируются не сами данные, а только ссылки (линки) на них в виде виртуальных файлов, в которых указано, в каком именно МК находятся их физические данные. Когда требуется очередная порция физических данных виртуального in-файла первого МК, ДС-программа читает их из соответствующего out-файла 2-го МК и посылает их в 1-й. Как легко догадаться, out-файлы также могут быть виртуальными, т.е не содержать готовых к употреблению данных, но - лишь обещание предоставить их, когда они действительно понадобятся. Наполнение out-файлов данными может быть реализовано двумя способами: -путем копирования данных из некой внутренней области памяти МК, -путем генерации "на лету" прикладной программой МК. Генерации на лету содержимого виртуальных файлов достаточно интересна. И хотя эти файлы очень похожи на обычные потоки, тем не менее возможно отличие. Например можно сделать виртуальный файл аудиовизуальных данных (что-то вроде .avi), содержащий 60-минутный демо-ролик игры (или демо работы любойдругой МК-программы). И мы сможем читать данные этого файла не только последовательно, но и с произвольным доступом. Разумеется, в некоторых случаях произвольный доступ к содержимому виртуальных файлов потребует весьма изощренного кода. Зато эквивалентная степень "сжатия" информации будет достигать огромных величин. Кстати, по поводу сжатия. Похожий простой вариант такого подхода на ПК реализован в виде произвольного доступа к сжатым дискам на уровне ОС, а к .zip архивам на уровне файловых коммандеров. В МК же этот принцип может быть обобщен на файлы почти любого типа. Например, возьмем МК-проигрыватель mp3 файлов. Его внутренние mp3 файлы могут показываться снаружи как виртуальные файлы несжатого аудио (что-то типа .wav). При необходимости то же самое можно проделать с превращением внутренних файлов .jpg формата в виртуальные .bmp, и так далее. Этот подход эквивалентен многократному увеличению размеров памяти МК. Если же применить более простой способ наполнения виртуальных файлов - при помощи копирования, то и это эквивалентно суммированию размеров внутренней памяти совместно работающих МК. Разумеется, информацию разных типов (аудио, видео, 3D графика и т.п.), или состоящую из нескольких потоков (многоканальное аудио, видео и др.) можно обрабатывать на разных МК одновременно и паралельно. Резюме: ------- Несколько МК могут работать совместно в режиме виртуального умножения или суммирования размеров их физической памяти, и в режиме суммирования их вычислительной мощности. ---------------------------------------------------------------------- 2. Какой язык лучше? Лучше тот, на котором ты хорошо умеешь думать, говорить и писать. А если выбирать язык программирования? Я писал программы на разных языках. Сначала в машинных кодах, на Бейсике, Алголе и Фортране. Потом на ассемблере и Си. Сейчас я остановился на C++ со встроенным ассемблером. Теоретически знаком с Паскалем, Java, C#. Однако чтобы сейчас писать востребованные программы - знания только языка программирования недостаточно. Приходится изучать самые разные API, весьма сложные приемы, методы, библиотеки функций, классов, шаблонов, протоколы, структуры данных в реестре и прочая и прочая... Хотя казалось бы, любая программа состоит всего-навсего из удобного вам GUI, и все. Ан нет, чтобы беспроблемно жить в среде современной ОС и порой очень тесно взаимодействовать с другими программами, написанными "неизвестно" кем и "не совсем известно" как - вам надо постоянно изучать вышеперечисленные подчас весьма малоинтересные сведения. И не только изучать, но и набираться опыта использования через отлавливание и исправление ошибок и учет всяких разных особенностей реализации. Поэтому лет этак до 20 начинающий программист еще просто не успевает стать таким опытным. А лет эдак после 30 подобная гонка с препятствиями может вам просто надоесть и придется переквалифицироваться... В то же время хорошая программа это вовсе не один код. Код - это всего лишь точная реализация идей, заложенных в основу программы. А хорошие идеи могут появиться и в детском саду, и на пенсии. И если у нас будет весьма простой инструмент, превращающий хорошие идеи в хорошие программы, то их количество и разнообразие возрастет. Сколько есть в мире хороших книг, и сколько есть в мире хороших программ? Отвечая на вопрос в заголовке - какой язык (программирования) лучше - скажу. С точки зрения программиста - лучше тот язык, который ему уже хорошо знаком, на котором он уже сегодня пишет хорошие программы. С точки зрения пользователя - лучше тот язык, на котором написана каждая из его любимых программ. Наш МК просто создан чтобы осуществить мечты любого программиста, потому что он сможет использовать в нем ту систему, язык и компилятор, которые он знает, а не "которые есть". Резюме: ------- Рынок программ для МК будет расти за счет вовлечения в процесс творчества новых преданных ему участников всех возрастов, специалистов в самых разных областях знаний. ---------------------------------------------------------------------- 3. НеВиртуальная Реальность, или Java Real Machine. История создания языка Java широко известна в узких кругах, и поэтому я не буду ее подробно пересказывать. Остановимся только на сути. 15 лет назад не было мобильных процессоров, также как и не было быстрого интернета. Для интеграции различных электронных устройств был создан этот язык. Многое было взято из C++, кое-что (говорят) из Оберона, но все это не слишком важно. Главная идея языка - перевод исходного кода в машинно- независимый байт-код, выполняемый на виртуальной машине JVM. А вот сама JVM уже должна быть реализована бинарно на любой железке, для которой нужны эти самые программы на Java. Красивое решение для тех лет. Однако за машинную независимость пришлось расплачиваться скоростью работы Java программ, т.к. JVM по сути - это программный эмулятор виртуального компьютера на обычном. Ну и как же это все касается МК, спросите вы? Двояко. Во-первых, основная идея Java сама по себе похожа на основную идею МК. Только в последнем случае мы имеем не виртуальную машину, а реальную - в виде отдельной железки. Соответственно МК уменьшает недостатки Java - потерю скорости, и увеличивает достоинства - мы получаем еще большую автономность, полную независимость МК от программно-аппаратной среды, в которой мы наблюдаем "выход" результатов его работы. Во-вторых. Теперь JVM наконец может обрести надежную крышу над головой. Для этого достаточно реализовать JVM на МК, и ставить МК с JVM всюду где уже работают или могут работать в принципе тонны написанных Java программ. Резюме: ------- Создание МК - следующий виток спирали развития хайтека после появления Java и Linux. Реализация JVM на МК позволит использовать МК везде где применяются программы на Java. ---------------------------------------------------------------------- Copyright (c) 2006 Vadim R. Madgazin. web ----------------------------------------------------------------------