~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ DC18DA185CA78BA73A38F6305D2F0362__1711490640 ✰
Заголовок документа оригинал.:
✰ Joyce (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Джойс (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Joyce_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/dc/62/dc18da185ca78ba73a38f6305d2f0362.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/dc/62/dc18da185ca78ba73a38f6305d2f0362__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:10:02 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 27 March 2024, at 01:04 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Джойс (язык программирования) — Википедия Jump to content

Джойс (язык программирования)

Из Википедии, бесплатной энциклопедии

Джойс
Парадигма параллельный , императивный , структурированный
Семья Вирт Паскаль
Разработано Пер Бринч Хансен
Впервые появился 1987 год ; 37 лет назад ( 1987 )
Стабильная версия
1 / 1987 ; 37 лет назад ( 1987 )
Дисциплина набора текста Сильный
Под влиянием
Взаимодействие последовательных процессов , Паскаль , Параллельный Паскаль
Под влиянием
СуперПаскаль

Joyce — безопасный язык программирования для параллельных вычислений , разработанный Пером Бринчом Хансеном в 1980-х годах. [1] Он основан на последовательном языке Паскаль и принципах взаимодействия последовательных процессов (CSP). Он был создан для устранения недостатков CSP, применяемого в качестве языка программирования, и для предоставления инструмента, в основном для обучения, для реализации распределенных вычислительных систем.

Язык основан на концепции агентов ; одновременно выполняемые процессы, которые взаимодействуют только посредством использования каналов и передачи сообщений . Агенты могут активировать субагенты динамически и рекурсивно . Разработка Джойса легла в основу языка SuperPascal , также разработанного Хансеном примерно в 1993 году.

Особенности [ править ]

Joyce основан на небольшом подмножестве Pascal, дополненном функциями параллелизма, вдохновленными CSP. [2] В следующих разделах описаны некоторые из наиболее новых функций, которые были представлены.

Агенты [ править ]

Агент — это процедура, состоящая из набора операторов и, возможно, вложенных определений других агентов. Агент может динамически активировать субагенты, которые выполняются одновременно со своим создателем . Агент может завершить работу только в том случае, если все его субагенты также завершили работу. Например, агент process2 активирует process1:

агент   процесс1  (  x  ,   y  :   целое число  )  ; 
  начать 
     ... 
 закончить  ; 

  агент   процесс2  ()  ; 
  использовать   процесс1  ; 
  начать 
     процесс1  (  9  ,   17  )  ; 
  конец  ; 

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

Общение [ править ]

Агенты общаются через объекты, называемые каналами . Каналы имеют алфавит, определяющий набор символов, которые могут передаваться. Каналы создаются динамически, доступ к ним осуществляется с помощью переменных порта . Тип порта определяется отдельным набором символов, составляющих его алфавит. Символы с несколькими значениями определяются определенным типом. Например:

поток   =   [  int  (  целое число  )  ,   eos  ]  ; 

Символ int(integer) обозначает символ сообщения , называемый intлюбого целочисленного значения. Второе объявление бестипового символа eos(конец потока) называется сигналом . После определения типа порта можно объявить переменную порта этого типа:

выход: поток
 в: поток
 

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

+выход;
 

Затем символы можно отправлять и получать по каналам с помощью операторов ввода и вывода в стиле CSP. ? и !соответственно. Связь может происходить только в том случае, если существует агент-получатель, соответствующий агенту-отправителю. Принимающий агент должен ожидать получения отправляемого типа символа. Например, значение 9, за которым следует eos символ отправляется в порт out:

вне   !    int  (  9  ) 
 выход   !    Эос 

И целочисленное сообщение принимается в переменную соответствующего типа, за которым следует eos:

получено   :   целое число 
 в   ?    int  (  получено  ) 
 в   ?    Эос 

Заявления опроса [ править ]

Заявления опроса основаны на концепции защищенных альтернатив CSP. Оператор опроса состоит из набора операторов, каждый из которых защищен оператором входного канала. Когда связь между передающим агентом и охраной согласована, выполняется охрана, за которой следует соответствующий оператор. Например:

голосование
     в ?  Икс -> х := х + 1 |
     в ?  Y -> y := y + 1
 конец
 

Где порт in контролируется по сигналам X или Y, при соответствующей связи соответствующие переменные x или y увеличиваются.

Безопасность [ править ]

Джойс был спроектирован как безопасный язык в том смысле, что компилятор сможет обнаружить все нарушения языковых правил.

Пример программы [ править ]

Ниже приведен полный пример программы, взятый из оригинальной статьи, знакомящей с языком программирования Джойса. [1] реализация алгоритма генерации простых чисел, основанного на методе просеивания для генерации простых чисел . А sieveАгенту отправляется поток целых чисел от его предшественника, первое из которых является простым числом. Он удаляет из потока все кратные этому простому числу и активирует преемника. Это продолжается до тех пор, пока eos Сигнал распространяется по набору сит.

агент   -сито  (  вход  ,   выход  :   поток  )  ; 
  вар   больше  :   логическое значение  ;    х  ,   у  :   целое число  ; 
    успех  :   поток  ; 
  начать 
     опрос 
         ?   int  (  x  )   ->   +  succ  ;  
              сито  (  успех  ,   выход  )  ;    подробнее   :=   правда   | 
          вход  ?   эос      ->   выход  !   эос  ;    больше   :=   ложный 
     конец  ; 
      а   еще   делать 
         опрос 
             ?   int  (  y  )   -> 
                 если   y   mod   x   <>   0   , то   успешно  !   интервал  (  у  )   | 
              вход  ?   эос      ->   выход  !   интервал  (  х  )  ; 
                  успех  !   эос  ;    больше   :=   ложный 
         конец  ; 
  конец  ; 

Следующий агент инициализирует набор ситовых агентов и вводит в них поток целых чисел от 3 до 9999.

 агентов  простые числа  ; 
  используйте   создание  ,   просеивание  ,   печать  ; 
  вар   а  ,   б  :   поток  ; 
  начать 
     +  а  ;    +  б  ;    сгенерировать  (  а  ,   3  ,   2  ,   4999  )  ; 
      сито  (  а  ,   б  )  ;    печать  (  б  ) 
 конец  ; 

Реализация [ править ]

Распределение стека [ править ]

Из-за одновременного выполнения процедур агента традиционную схему последовательного распределения стека нельзя использовать, поскольку записи активации вызовов агента не следуют шаблону «последним пришел — первым вышел». Вместо этого отношения создатель-субагент образуют стек с древовидной структурой. Для реализации такого поведения используется простая схема, которая работает путем выделения новых записей активации наверху стека и связывания записей активации субагентов с записью их создателя. Эти записи освобождаются только тогда, когда агент завершает работу и они оказываются на вершине стека. [3] Эффективность этой схемы зависит от структуры и поведения программы, что в некоторых случаях приводит к неэффективному использованию памяти. Более эффективная схема была реализована в языке Хансена SuperPascal .

Ссылки [ править ]

  1. ^ Перейти обратно: а б Хансен, Бринч (2002). «Джойс: язык программирования для распределенных систем». В Хансене, Пер Бринч (ред.). Происхождение параллельного программирования: от семафоров к удаленным вызовам процедур . Нью-Йорк, Нью-Йорк: Спрингер. стр. 464–492. дои : 10.1007/978-1-4757-3472-0 . ISBN  978-1-4419-2986-0 . S2CID   44909506 .
  2. ^ Хансен, Бринч (июнь 1989 г.). «Отчет о языке Джойса» . Программное обеспечение: практика и опыт . 19 (6). Джон Уайли и сыновья: 553–578. дои : 10.1002/спе.4380190606 . S2CID   30474491 .
  3. ^ Хансен, Бринч (июнь 1989 г.). «Многопроцессорная реализация Джойса» . Программное обеспечение: практика и опыт . 19 (6). Джон Уайли и сыновья: 579–592. дои : 10.1002/спе.4380190606 . S2CID   30474491 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: DC18DA185CA78BA73A38F6305D2F0362__1711490640
URL1:https://en.wikipedia.org/wiki/Joyce_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Joyce (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)