> man operating_systems
Центр информации по операционным системам :: Форумы :: Общие :: Разное
 
<< Предыдущая тема | Следующая тема >>
OO Архитектура или как сделать объективно классную систему.
Переход на страницу  [1] 2 3 4
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Dron
Четверг 19.08.2004 11:34


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Че-то не нашел раздела для всякого рода филосовствований... а хочется подумать... может кто че умное скажет...

Вынашиваю идею чисто объектной системы (это не конкурент 3OS, нечто другое но вот никак не могу понять как возможно отказаться от стандартных типов вообще?

Вопрос даже не в системе... вопрос в идеальной объектности.

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

чтобы создать объект - нам надо написать new blablabla, или blablabla new суть от того не меняется... а почему-то введя число мы можем получить объект... то есть компилятор (или чего там есть, речь не только о smalltalk)
должен знать что 1 - это integer. и создавать специальный объект.

следовательно нету ее, этой чистой объектности... манипуляции объектные, а суть???

конечно если предположить, что окружение (компилятор ил среда) вообще понятия не имеет о типах, тогда становится абсолютно непонятно с чего растут ноги. надо ж на чем-то сидеть, как говорится...

Но если подумать об объектных процессорах? у него же принципиально не должно быть другого типа кроме объекта! Но как же быть со всеми числами, символами?

Мне лично кажется что объектный процессор вообще должен забыть что такое байт... но как без этого жить то?
<span class='smallblacktext'>[ Редактирование ]</span>

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

Андрей Валяев
Наверх
Сайт
Roman I Khimov
Четверг 19.08.2004 12:40

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Dron написал(а) ...
Че-то не нашел раздела для всякого рода филосовствований... а хочется подумать... может кто че умное скажет...

Надо подумать над его выделелением. Хотя, "Разное" - категория что надо.
Dron написал(а) ...
Мне лично кажется что объектный процессор вообще должен забыть что такое байт... но как без этого жить то?

Интересное размышление, однако.

Думается мне, что здесь очень многое зависит от того, как мы определяем тип "объект" в процессоре, ведь в принципе, если понимать объект как ссылку в памяти на структуру определенного вида, то, конечно, с одной ссылкой далеко не уедешь. С другой стороны, здесь имеет место и такая вещь - а насколько глубоко будет реализована работа с объектами в таком процессоре? Если процессор предоставит в своем базовом типе хоть одно поле данных, то с этим объектом можно будет работать в рамках предоставляемого процессором набора команд.

Нет, что-то не то пишу.

Черт, а ведь зацепило.

Подожди. Но ведь и существующие процессоры x86 можно назвать объектными, единственное, что они не поддерживают класса "объект" аппаратно. В остальном же - вот тот же байт, это ведь объект для которого существуют определенные команды - его методы, можно сказать.

Может быть проблема еще и в том, что мы понимаем под объектностью? Ведь это, по большому счету, метод мышления, метод проектирования, анализа. При этом, что творится на уровне ассемблера - абсолютно безразлично. Там может и не быть объектов, а прозрачность обеспечивает компилятор. То есть ноги растут от представления нашего об объектах. Если мы понимаем объект как какую-то структуру в памяти, то это, очевидно, неверно. В объектном процессоре не обязательно следовать тем приемам, которые применяются в сегодняшних компиляторах для эмуляции объектов.

Поэтому, в целом, я бы даже сказал, что идеально объектная система отнюдь не обязательно должна иметь объектный процессор. Хотя, конечно, это был бы ей плюс. Но она должна быть объектной для пользователя! А объектный процессор отнюдь не должен оперировать с объектами так, как это принято сейчас, может быть реализация объектности там будет совершенно другая. Например? Ну вот байт, например, там вполне даже может и сохраниться. Ведь мы под объектом имеем ввиду хранилище информации снабженное механизмом взаимодействия с этой самой информацией. Есть ли для нас разница, байты будут в процессоре, или специальный тип "число" и специальный тип "буква"?

Может быть здесь еще имеет место та самая инкапсуляция? Ведь все равно, что там. Главное, чтобы быстро работало. Если все отличие объектного процессора будет в том, что он предоставит, например, возможность вызова метода за один такт, а байты останутся на своих местах, то это все равно будет замечательный объектный процессор. Чистота объектности должна быть в мозгу, процессор за человека не помыслит, а иметь объекты на уровне ассемблера - может быть и хорошо, но обязательно.

Потому что если начать копать, то объектности натуральной и вовсе нигде нет - одни биты кругом. Однако, если ты видишь в своем языке программирования тип "буква" и можешь с ним обращаться как с объектом, то есть ли тебе разница как это реализуется на самом деле? Только если ты хочешь действительно сделать объектный процессор.

Идеального же ничего не бывает, такая вот статистика собрана за время существования этой земли...

Черт. Ерунды-то понаписал!.. Но зацепило, зацепило...

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

А впрочем?.. Как знать!..


Греби и улыбайся!
Наверх
Сайт
Dron
Четверг 19.08.2004 13:15


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Взял и увел меня от темы... хотя может я свой интерес не слишком хорошо сформулировал...

Странного хочу! хочу чтобы был язык, объектный но низкого уровня. при этом сам язык будет примитивным до невозможности (ну типа команды 3-4... а все остальное вынесется на иные уровни бытия...

Вот как сделать так, чтобы не приходилось копаться в грязи (имеются ввиду стандартные типы данных) а думать о вечном!

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

мне же хочется объектный байткод!
В принципе стандартные типы могут быть... но это должно быть неявно... типа ты знаешь что есть объект Integer. а как он реализован - дело второе. он может быть реализован на языке, а может быть встроен в среду...

Но тут встает другой вопрос... как инициализировать базовые типы если понятия примитива нет вообще. то есть в программе нельзя использовать число??? не выйдет.

Символы можно абстрагировать до чисел.
строки можно абстрагировать до массивов.
только от чисел никуда не деться.
хотя бы один формат (цело-дробный автоматически) должен быть!

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

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

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

Андрей Валяев
Наверх
Сайт
Dron
Четверг 19.08.2004 13:19


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Зато прикинь какие перспективы объектного осестроения.

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

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

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

Андрей Валяев
Наверх
Сайт
Roman I Khimov
Четверг 19.08.2004 15:04

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Dron написал(а) ...
Взял и увел меня от темы... хотя может я свой интерес не слишком хорошо сформулировал...

По ходу написания у меня не раз возникали мысли, что я куда-то не туда гоню...
Dron написал(а) ...
Вот как сделать так, чтобы не приходилось копаться в грязи (имеются ввиду стандартные типы данных) а думать о вечном!

Можно попробовать податься в дзен-буддизм.
Dron написал(а) ...
Но тут встает другой вопрос... как инициализировать базовые типы если понятия примитива нет вообще. то есть в программе нельзя использовать число??? не выйдет.

Ну, в общем, ты сам все написал.

Очень интересная идея, однако... Я так понимаю, что это новый язык, новый компилятор, новые ВМ... Очень много всего. Кто и когда взялся бы за разработку этого?..


Греби и улыбайся!
Наверх
Сайт
Dron
Четверг 19.08.2004 18:04


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Я мечтаю и вынашиваю глобальные планы...
У меня есть мысль, и я ее думаю... Ж)

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

Андрей Валяев
Наверх
Сайт
Chizh
Пятница 01.10.2004 17:59
ID пользователя #90
Зарегистрирован: Понедельник 13.09.2004 18:42
Сообщений: 170
Dron написал(а) ...
Зато прикинь какие перспективы объектного осестроения.

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

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


Какие традиционные функции ты имеешь ввиду? Вообще, вычислительный процесс без функций невозможен. Конечно, в идеале, функций вне класса (как в С++) быть недолжно. Но с другой стороны они не обязательны, поэтому мешают не сильно.
А традиционные байты - это же данные в чистом виде. И даже при обмене сообщениями, передаваемая информация должна должна быть, т.е. байты. Я сомневаюсь, что программа (или система) без данных возможна.
Наверх
Сайт
Chizh
Пятница 01.10.2004 19:09
ID пользователя #90
Зарегистрирован: Понедельник 13.09.2004 18:42
Сообщений: 170
Dron написал(а) ...
мне же хочется объектный байткод!
В принципе стандартные типы могут быть... но это должно быть неявно... типа ты знаешь что есть объект Integer. а как он реализован - дело второе. он может быть реализован на языке, а может быть встроен в среду...


На C++ обычной практикой является
typedef int INT;
И использование в коде вместо int только INT. Чем не гибкость?
Наверх
Сайт
vilmor
Пятница 29.10.2004 18:48
ID пользователя #140
Зарегистрирован: Пятница 29.10.2004 17:09
Местонахождение: Tomsk, Russia
Сообщений: 35
Сорри, но это моя излюбленная тема.
Не мог упустить случая

Dron написал(а) ...
Взять тот же smalltalk...
считается чисто объектным языком, и то в принципе правда.
На любые, даже самые примитивные типы - у него есть объекты... но один момент...

чтобы создать объект - нам надо написать new blablabla, или blablabla new суть от того не меняется... а почему-то введя число мы можем получить объект... то есть компилятор (или чего там есть, речь не только о smalltalk)
должен знать что 1 - это integer. и создавать специальный объект.

следовательно нету ее, этой чистой объектности... манипуляции объектные, а суть???

В этом случае, чистая объектность всё же имеет место. С точки зрения интерпретатора Smalltalk нет разницы, с какими объектами он работает - числами, строками или чем-то другим, поскольку он работает не с самими объектами, а только их дескрипторами, которые у всех "типов" объектов одинаковы. Всё дело в том, что транслятор программы. генерирующий байт-код для интерпретатора (и который частенько написан на Smalltalk ), распознаёт в тексте программы лексические конструкции, определяющие объекты-литералы (числа, строки, символы, массивы), и заменяет их на реальные объекты. Сделано так просто для удобного написания программ.

Dron написал(а) ...
конечно если предположить, что окружение (компилятор ил среда) вообще понятия не имеет о типах, тогда становится абсолютно непонятно с чего растут ноги. надо ж на чем-то сидеть, как говорится...

Но если подумать об объектных процессорах? у него же принципиально не должно быть другого типа кроме объекта! Но как же быть со всеми числами, символами?

Тут обойтись без примитивных "типов" не получится. Любая молекула состоит из атомов. Атомы - из элементарных частиц. В реальном мире, деление можно было бы продолжать дальше, но в случае программирования всегда существуют элементарные примитивные сущности.
Наверх
Сайт
vilmor
Пятница 29.10.2004 18:48
ID пользователя #140
Зарегистрирован: Пятница 29.10.2004 17:09
Местонахождение: Tomsk, Russia
Сообщений: 35
Dron написал(а) ...
Странного хочу! хочу чтобы был язык, объектный но низкого уровня. при этом сам язык будет примитивным до невозможности (ну типа команды 3-4... а все остальное вынесется на иные уровни бытия...

Вот как сделать так, чтобы не приходилось копаться в грязи (имеются ввиду стандартные типы данных) а думать о вечном!

Ну, это и есть Smalltalk. Его упрощённый байт-код - это и есть те самые 3-4 команды. Вот только на деле их значительно больше - в целях оптимизации работы интерпретатора. Smalltalk позволяет не копаться в грязи и не думать о примитивных типах. Кстати, в нём типов как таковых и нет - есть только классы.

Пожалуй. самое большое различие между Smalltalk и Java - это то, что Java является типизированным языком. Большинство остальных различий - лишь следствие типизированности Явы.

Dron написал(а) ...
Та же боготворимая ныне java... да те же яйца что и C++, вид сбоку. все практически тоже те же стандартные типы, изобилие ключевых слов.

В Smalltalk, как известно, нет ключевых слов - за исключением слова primitive

Dron написал(а) ...
Но тут встает другой вопрос... как инициализировать базовые типы если понятия примитива нет вообще. то есть в программе нельзя использовать число??? не выйдет.

Есть достаточно ориинальный выход: примитивные объекты просто не нужно инициализировать, потому что они никогда не создаются, поскольку существуют всегда. Например, UndefinedObject, SmallInteger, Character и Boolean в Smalltalk. Причём, каждый такой объект существует в единственном экземпляре: не может быть двух примитивных числа 10 класса SmallInteger, но может быть сколько угодно чисел 10 непримитивного класса LargeInteger или Complex.

Dron написал(а) ...
вообще это все стереотипы... именно они мешают свободно мыслить... в нашем закостенелом мозгу все мысли о вечном сводятся к привычным уже языкам... но что делать...

Вот поэтому и надо начинать учить школьников и студентов-первокурсников не Паскалю, а Smalltalk. По тем же причинам, невозможно понять ООП по книгам Страуструпа
Наверх
Сайт
Переход на страницу  [1] 2 3 4  

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.