Автор Тема: Допилить оберон под себя  (Прочитано 24320 раз)

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re:Допилить оберон под себя
« Ответ #15 : Март 10, 2011, 10:29:56 am »
По поводу нумерации элементов массивов. Попрограммировав чуток на Fortran я пришёл к выводу, что в Fortran всё правильно сделано. И в старом-добром Pascal тоже. То есть как захотель - так и пронумеровал. Хочу с 0, хочу с 1, хочу с -100.

Тут вот какое дело. С нуля да, нужно бывает. Когда нужны массивы. Это чёрти знает что, на самом деле, эти массивы. Тут таки всплывает это ваше смещение. Вот когда нужно это смещение - это массивы. И нужно нумеровать с 0.
Но! Часто (и неимоверно часто в Fortran) массивы = матрицы. И в любом учебнике математики все формулки предполагают нумерацию с 1. Для матриц это естественно и удобно. Это математическая абстракция, машинное представление тут идёт лесом. По-умолчанию, в Fortran с 1. В Pascal, вроде, тоже.

А ещё бывает удобно и с -100500 нумеровать.

Так что эти ваши машинные штучки со смещениями... Есть многое на свете, друг Горацио...

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #16 : Март 10, 2011, 01:50:43 pm »
6. Модуль = процесс, процедура модуля - тред.

Это как?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #17 : Март 10, 2011, 04:11:57 pm »
4. явное наличие в языке интерфейсов (спецификаций) модулей. чтобы можно было явно сказать, что вот этот модуль удовлетворяет вот такой-то спецификации. Сейчас по сути типизация модулей утиная.

А зачем?

Валерий Лаптев

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #18 : Март 11, 2011, 09:46:18 am »
6. Модуль = процесс, процедура модуля - тред.
Это как?
Ну, типа специальное слово parallel j,ъявляет модуль процессом. Тогда запускаемая из него процедура - это тред. В смысле Windows. Только механизмы синхронизации должны быть спрятаны за кулисами - по одному только слову parallel все должно корректно работать.   

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #19 : Март 11, 2011, 09:51:12 am »
Я слабо представляю как кусок кода может быть процессом.
Для процесса можно указать точку входа в коде, но модуль процессом быть не может, равно как и процедура.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #20 : Март 11, 2011, 10:49:57 am »
Я слабо представляю как кусок кода может быть процессом.
Может быть имелось в виду не "процессом", а "потоком"?  ::)
Но и в этом случае вопрос реализации остаётся открытым.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #21 : Март 11, 2011, 11:11:45 am »
Процесс, поток… Какая разница?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #22 : Март 11, 2011, 11:38:57 am »
Вроде как у процесса может быть несколько потоков.
С запущенной программой связан один процесс. Программа может быть многопоточной.
По умолчанию для процесса создаётся один поток. Если нужно больше, то ручками.
Типа, ликбез?  :D
Можно ещё нити (волокна) упомянуть.

Вообще, я в этой теме плотно не сижу. Можно у Рихтера посмотреть. Или здесь более опытные товарисчи подскажут  :)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #23 : Март 11, 2011, 11:49:19 am »
Я к тому, что для обсуждаемого вопроса разница между процессом и потоком не играет значения. А процесс от потока отличается прежде всего изолированностью памяти.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #24 : Март 11, 2011, 12:02:43 pm »
Как я уже писал выше, дополнительные потоки создаются вручную, путём вызова соответсвующих функций WinAPI (если речь о винде). Суть предложения Валерия Лаптева я понял так, что эти вызовы будут встаиваться самим компилятором. Нужен новый поток в приложении?, - пометил модуль ключевым словом PARALLEL, и всё! Если я не так понял, пусть Валерий меня поправит.

Вот и связь с обсуждаемым вопросом  ;) С процессами этот фокус точно не пройдёт.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #25 : Март 11, 2011, 01:29:17 pm »
Почему же? Вполне пройдет. Запустится просто отдельный процесс с которым взаимодействие будет автоматически организовано через какое-нибудь IPC. Разницы тут как раз особой нет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Допилить оберон под себя
« Ответ #26 : Март 11, 2011, 02:19:20 pm »
4. явное наличие в языке интерфейсов (спецификаций) модулей. чтобы можно было явно сказать, что вот этот модуль удовлетворяет вот такой-то спецификации. Сейчас по сути типизация модулей утиная.

А зачем?


В экосистеме КП/ББ не принято иметь несколько версий одного модуля. Т.е. традиционная для модульных языков вариантивность на уровне "1 спецификация модуля - несколько реализаций" (вполне неплохая по-своему) ушла в прошлое, уступив место объектно-ориентированным разъёмам, когда  функцию интерфейса выполняет один модуль, и в нём же объявлен тип разъёма, а функцию реализации выполняют другие модули, с различными именами, динамически загружаемые и втыкающие свои разъёмы. Это более сильный и общий подход - динамическое подключение реализаций, много реализаций одновременно, не нужна перекомпиляция и т.п. Т.е. как бы мета-подход, который снимает с уровня самих модулей некоторую старую смысловую нагрузку. Отсюда же утрата прежнего значения отдельной спецификации модуля.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #27 : Март 11, 2011, 03:08:31 pm »
[quote author=vlad link=topic=26
В экосистеме КП/ББ не принято иметь несколько версий одного модуля. Т.е. традиционная для модульных языков вариантивность на уровне "1 спецификация модуля - несколько реализаций" (вполне неплохая по-своему) ушла в прошлое, уступив место объектно-ориентированным разъёмам, когда  функцию интерфейса выполняет один модуль, и в нём же объявлен тип разъёма, а функцию реализации выполняют другие модули, с различными именами, динамически загружаемые и втыкающие свои разъёмы. Это более сильный и общий подход - динамическое подключение реализаций, много реализаций одновременно, не нужна перекомпиляция и т.п. Т.е. как бы мета-подход, который снимает с уровня самих модулей некоторую старую смысловую нагрузку. Отсюда же утрата прежнего значения отдельной спецификации модуля.

Не, не улавливаю. Чем это принципиально отличается от классических ООП интерфейсов? Сколько угодно модулей могут реализовать заданный интерфейс и т.д. по списку.

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Допилить оберон под себя
« Ответ #28 : Март 11, 2011, 03:54:53 pm »
Интерфейс явно специфицирован, объявлением типа.
Это к замечанию Алексея о том, что нет типизации для модулей.

Димыч

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re:Допилить оберон под себя
« Ответ #29 : Март 11, 2011, 04:15:47 pm »
Все привет!
Когда работал над AGG, мне сильно не хватало битовой арифметики с возможностью простого приведения численных типов.
В принципе, при манипуляции с битами часто численное значение не интересно, поэтому охрана численного типа не особо важна. Важна размерность данных: 1, 2, 4, ... 64 бита. Ну и возможность группами битов/отдельными битами манипулировать.