OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Апрель, 2024 23:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Среда, 28 Апрель, 2010 21:13 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Сергей Прохоренко писал(а):
В современной индустрии программирования полно галиматьи и шаманства, и участники этого форума пишут об этом регулярно.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2010 08:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
... В то время, когда создавался С, только Дейкстра (и, может быть, еще пара-тройка человек) задумывался о том, что такое программы. ...
Ну да. Одних только мерждународных комитетов минимум два даже я знаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2010 12:45 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
Валерий Лаптев писал(а):
... В то время, когда создавался С, только Дейкстра (и, может быть, еще пара-тройка человек) задумывался о том, что такое программы. ...
Ну да. Одних только мерждународных комитетов минимум два даже я знаю.

Комитетов - по каким вопросам?
Я имею ввиду дейкстрины труды по структурному программированию и дисциплина программирования, где он прямо пишет, что программа - это для человека, а не для компьютера... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2010 13:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Пардон, это - основная идеология Алгола-60.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2010 16:55 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Комитетов - по каким вопросам?
Из тех, что я знаю, один по языкам программирования (который создал Алгол-68). Другой по, кажется, технологиям программирования. Была желтенькая книжечка Турского (кстати, неплохое чтение), вот он был из этой второй рабочей группы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2010 18:19 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
Валерий Лаптев писал(а):
Комитетов - по каким вопросам?
Из тех, что я знаю, один по языкам программирования (который создал Алгол-68). Другой по, кажется, технологиям программирования. Была желтенькая книжечка Турского (кстати, неплохое чтение), вот он был из этой второй рабочей группы.

Может быть, так и было. Но Дейкстра как-то напомнил об этом вовремя... :) Он, вроде был членом как раз второго комитета... :)
Первый - это ванвейнгаартен (не знаю, где большие буквы ставить:) ), а вторая книжка - Методология программирования. Занимательное чтение. Кстати, Турский там против оператора-переключателя возникает... :)
И написано у него не так ясно, как у Дейкстры. Но пример он, конечно, приводит классный!
А в книге ванвейнгаартена об этом вроде бы вообще нет - он там двухуровневые грамматики обсуждает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Май, 2010 16:15 

Зарегистрирован: Четверг, 05 Ноябрь, 2009 13:52
Сообщения: 14
Откуда: Украина, г. Харьков
Ответ прост, нужно лишь немного знать ассемблер.
Если массив последовательность индексированных данных
Код:
mas: Array [0..2]of Byte;

то для того чтобы пройтись по ним нужно, знаяя сегментый адрес и смещение, менять смещение в зависимости от типа данных (для байта +1, для WORD +1+1)
Код:
asm
  mov AX, seg mas {сегментый адрес}
  mov ES, AX
  mov BX,offset mas {смещение}
 
  mov CX,3 {колличество итераций}
  @main_loop {главный цыкл обработки}
    mov ES:[BX],CX {mas[i]=i}
    inc BX {смещаемся на 1 байт}
  loop @main_loop {dec CX, jnz @main_loop}
end;

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Май, 2010 16:25 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
niello писал(а):
Ответ прост, нужно лишь немного знать ассемблер.

приехали.
сушите вёслы!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 04:47 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Сегодня, читая "Построение компиляторов" Вирта обратил внимание вот на что: "так как в Обероне нижняя граница массива всегда 0, [то для проверки корректности индекса] достаточно одного сравнения [значения индекса с длиной массива], если значение индекса считается беззнаковым целым. Это так, потому что отрицательные значения в дополнительном коде содержат 1 в знаковом разряде, делая беззнаковое значение больше самого большого (знакового) целого значения" [Вирт Н. Построение компиляторов, с.92].


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 07:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Александр Ильин писал(а):
Сегодня, читая "Построение компиляторов" Вирта обратил внимание вот на что: "так как в Обероне нижняя граница массива всегда 0, [то для проверки корректности индекса] достаточно одного сравнения [значения индекса с длиной массива], если значение индекса считается беззнаковым целым. ...
Забавно. Теперь понятней, почему эти проверки не тормозят.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 10:52 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Александр Ильин писал(а):
Сегодня, читая "Построение компиляторов" Вирта обратил внимание вот на что: "так как в Обероне нижняя граница массива всегда 0, [то для проверки корректности индекса] достаточно одного сравнения [значения индекса с длиной массива], если значение индекса считается беззнаковым целым. Это так, потому что отрицательные значения в дополнительном коде содержат 1 в знаковом разряде, делая беззнаковое значение больше самого большого (знакового) целого значения" [Вирт Н. Построение компиляторов, с.92].

Однако, не забывайте, что это верно для достаточно низкоуровневых задач. В случае же прямого отображения аргумента на индекс массива (начинающегося не с 0 ПО ЗАДАЧЕ), преобразования всё равно будут иметь место и, соответственно, проверки - тоже. И, в случае, с оберонами - РУЧНЫЕ. То есть размножены места потенциального появления ошибок.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 19:32 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А в случае переменных (в определении типа) границ возникает риск забыть границы конкретного массива - и опять же допустить ошибку.

Имеет смысл сравнивать только фиксированный вариант - всегда с 0 или всегда с 1. И тут, как видим, у всегда-0 имеются преимущества.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 21:53 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Илья Ермаков писал(а):
А в случае переменных (в определении типа) границ возникает риск забыть границы конкретного массива - и опять же допустить ошибку.


Для такого случая нужно всегда использовать функцию, возвращающую верхнюю границу массива, а еще лучше - ввести в язык цикл foreach с параметрами (i, j, k ...), т.е. гибрид for и обычного foreach. Тогда забыть раницы конкретного массива никак не удастся.

Кстати, если память отказала программисту, то ошибка будет независимо от того, нумеруются ли массивы с 0 или с 1.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 22:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Зачем огород городить, если можно просто и тупо :)

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 22:39 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
Зачем огород городить, если можно просто и тупо :)

публика просит демонстрации!...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 09 Май, 2010 23:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Wlad2 писал(а):
Илья Ермаков писал(а):
Зачем огород городить, если можно просто и тупо :)

публика просит демонстрации!...


Просто и тупо - это сказано про фиксированную нумерацию. Добавил "а" ко второму абзацу. Его пояснять не надо?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB