Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 5146 22-09-2007 12:32 | |
Ответ на »сообщение 5142« (AVC)
___________________________
ИМХО, по большому счету, ни одной (правда, я сейчас говорю только о тех языках ассемблера, на которых писал сам).
Здесь получилась двусмысленность. :)
Я хотел сказать, что на ассемблере нельзя реализовать высокоуровневые абстракции.
(Это, может быть, слишком сильное высказывание. Но говорю то, что думаю.)
№ 5145 22-09-2007 12:21 | |
Ответ на »сообщение 5144« (AVC)
___________________________
>>> Это "нормальный" :) цикл, а до этого был бесконечный.
>>> А к чему этот вопрос?
Это не вопрос, а пример... Кстати, очень показательно я допустил ошибку... ))) В том смысле, что отсутсвие в языке соответствующих грамматических конструкций делает язык и проще и универсальнее, но позволяет легко допускать ошибки на ровном месте...
А еще, чтобы понять программу при чтении необходимо всегда в голове держать состояния всех переменных, а еще помнить где и почему они назначались...
Это ошибка (бесконечный цикл) или это заумная оптимизация с порядком инструкций (к примеру)?:
@loop:
mov ecx, 100
add eax, 5
dec ebx
jnz loop
№ 5144 22-09-2007 12:11 | |
Ответ на »сообщение 5143« (Стэн)
___________________________
Ответ на »сообщение 5140« (Стэн)
___________________________
Ой!!!
Конечно же так:
mov ecx, 100
@loop:
add eax, 5
dec ecx
jnz loop
Хорошо, а то я уже терялся в догадках... :)
Это "нормальный" :) цикл, а до этого был бесконечный.
А к чему этот вопрос?
№ 5143 22-09-2007 12:03 | |
Ответ на »сообщение 5140« (Стэн)
___________________________
Ой!!!
Конечно же так:
mov ecx, 100
@loop:
add eax, 5
dec ecx
jnz loop
№ 5142 22-09-2007 11:57 | |
Ответ на »сообщение 5139« (Антон Григорьев)
___________________________
Ответ на »сообщение 5138« (AVC)
___________________________
Я, собственно, и прошу назвать хотя бы одну абстракцию, которую нельзя реализовать на Обероне.
А можете ли назвать хоть одну высокоуровневую абстракцию, которую нельзя реализовать на ассемблере?
ИМХО, по большому счету, ни одной (правда, я сейчас говорю только о тех языках ассемблера, на которых писал сам).
Все упирается в отсутствие средств контроля.
Нет контроля -- нет гарантий. Нет гарантий -- нет надежности и высокоуровневости.
Скажем, Оберон-1 позволяет за счёт полей записей процедурного типа реализовать ООП и даже больше, чем ООП: например, два "объекта" одного типа могут иметь разные реализации одного "метода", чего в классическом ООП быть не может. Расплата за гибкость - надо самому заботиться о том, чтобы процедурные поля указывали туда, куда надо. И ещё озаботиться фабрикой класса, чтобы программист не мог создавать экземляры такого "класса", минуя тот код, который назначает значения процедурным полям. Вопрос: реализуемо ли ООП на Обероне-1? Да, реализуемо. Удобно ли это делать? Нет, неудобно, потому что приходится писать много рутинного кода. Ведь в этом и заключаются основные претензии к Оберонам (и Зуев здесь не оригинален): многие удобные и проверенные средства в язык не включены, и программист, прежде чем начать реально писать программу, должен потратить много времени и сил на "заход солнца вручную".
Прежде чем говорить о "заходе солнца вручную", хорошо бы представить, с чем следует сравнивать Оберон. На мой взгляд, речь может идти о компонентных технологиях (COM и т.п.). Вот и сравните, где больше ручной работы и "захода солнца вручную". (Просто представьте в уме код на Обероне и код (скажем, на Си++) для COM.)
№ 5141 22-09-2007 11:56 | |
Ответ на »сообщение 5140« (Стэн)
___________________________
Чтобы было интереснее:
@loop:
mov ecx, 100
add eax, 5
dec ebx
jnz loop
Какова семантика этого кода?
№ 5140 22-09-2007 11:40 | |
Ответ на »сообщение 5138« (AVC)
___________________________
>>> А какую не может?
>>> Я, собственно, и прошу назвать хотя бы одну абстракцию, которую нельзя реализовать на Обероне.
Вызов прерывания, запись в порт... Приходится asm вставки делать - явно не на Обероне...
Так что Оберон - это не серьезно, слишком наворочено, и не позволяет полностью контролировать систему... ;-) Вообщем, на свалку его, все пишем в машинных кодах!
>>> Написано на удивление кратко и голословно.
Здесь необходимо начало фразы прочитать:
>>> Чем сложнее Оберон-программа, тем яснее становится видно, что лаконичность языка на практике означает его низкий уровень: отсутствие в нем тех или иных возможностей оборачивается избытком низкоуровневых деталей в программах...
Это давнишний спор: Должен ли язык в грамматических конструкциях предоставлять некоторые средства: полиморфизм - virtual, инкапсуляцию - private, функции высшего порядка в ФЯ, лямбда (анонимные методы с замыканием), структурную обработку исключений try...finally, и т.д. и т.п...
Или все это необходимо каздый раз писать ручками? Такая необходимость и пораждает множество низкоуровневых деталей, которые направлены не на решение конкретной прикладной задачи, а на "перекидывание байтов" из одной переменной в другую... При этом семантика программы перетикает из текста в состояние переменных, которое при его чтении совсем не очевидны...
Для сравнения:
@loop:
mov ecx, 100
add eax, 5
dec ecx
jnz loop
for i := 1 to 100 do
a := a + 5;
end
№ 5139 22-09-2007 11:26 | |
Ответ на »сообщение 5138« (AVC)
___________________________
Я, собственно, и прошу назвать хотя бы одну абстракцию, которую нельзя реализовать на Обероне.
А можете ли назвать хоть одну высокоуровневую абстракцию, которую нельзя реализовать на ассемблере?
Скажем, Оберон-1 позволяет за счёт полей записей процедурного типа реализовать ООП и даже больше, чем ООП: например, два "объекта" одного типа могут иметь разные реализации одного "метода", чего в классическом ООП быть не может. Расплата за гибкость - надо самому заботиться о том, чтобы процедурные поля указывали туда, куда надо. И ещё озаботиться фабрикой класса, чтобы программист не мог создавать экземляры такого "класса", минуя тот код, который назначает значения процедурным полям. Вопрос: реализуемо ли ООП на Обероне-1? Да, реализуемо. Удобно ли это делать? Нет, неудобно, потому что приходится писать много рутинного кода. Ведь в этом и заключаются основные претензии к Оберонам (и Зуев здесь не оригинален): многие удобные и проверенные средства в язык не включены, и программист, прежде чем начать реально писать программу, должен потратить много времени и сил на "заход солнца вручную".
№ 5138 22-09-2007 11:04 | |
Ответ на »сообщение 5137« (Стэн)
___________________________
Ответ на »сообщение 5136« (AVC)
___________________________
>>> Ведь модуль позволяет создать и экспортировать любую высокоуровневую абстракцию.
И какую именно высокоуровневую абстракцию позволяет создавать и экспортировать модуль? Не вообще, а на примере Оберона...
А какую не может?
Я, собственно, и прошу назвать хотя бы одну абстракцию, которую нельзя реализовать на Обероне.
Написано же:
>>> и для борьбы со сложностью у программиста по существу, имеется только старый как мир процедурный механизм, да понятие модуля, чего совершенно очевидно недостаточно.
Написано на удивление кратко и голословно.
Так и на C можно экспортировать процедуры и указатели на структуры... А что там в реализации будет запрятано... Докажите, что абстракции более низкого уровня чем в Обероне!
А что тут доказывать?
Уровень контроля межмодульного соответствия в Си и Обероне совершенно разный.
В Си "экспорт указателей" ничего не гарантирует. В то время как в Обероне обойти контроль типов нельзя.
№ 5137 22-09-2007 10:01 | |
Ответ на »сообщение 5136« (AVC)
___________________________
>>> Ведь модуль позволяет создать и экспортировать любую высокоуровневую абстракцию.
И какую именно высокоуровневую абстракцию позволяет создавать и экспортировать модуль? Не вообще, а на примере Оберона...
Написано же:
>>> и для борьбы со сложностью у программиста по существу, имеется только старый как мир процедурный механизм, да понятие модуля, чего совершенно очевидно недостаточно.
Так и на C можно экспортировать процедуры и указатели на структуры... А что там в реализации будет запрятано... Докажите, что абстракции более низкого уровня чем в Обероне!
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|