[01:21:14] <vаlexey> divan: у тебя очепятка в схеме.
[01:21:18] <vаlexey> realisation вместо realization
[01:21:50] <divan> о спасибо :)
[01:21:54] <divan> ща, поправлю
[01:22:00] <divan> я думаю там еще много
[01:22:04] <divan> чего не так )))
[01:23:37] <vаlexey> divan: а почему Host OS на оберонкоре упорно называют Guest OS? :-) То есть в случае ББ Host OS это Windows, а Guest вообще то ББ, или Оберон. Это устоявшееся терминология.
[01:23:54] <vаlexey> Если у нас есть виртуальная машина, то система в которой она запущена - это Host
[01:24:05] <vаlexey> А та система которая в виртуалке крутится - это Guest
[01:25:46] <divan> хм
[01:25:59] <divan> а мне кажется логично как Петр написал :)
[01:26:21] <divan> я думаю пошло все от Обероновской Оси
[01:26:30] <divan> для нее либы винды были как бы гостевые
[01:26:39] <vаlexey> то есть вот берем, запускаем VMWare в винде, запускаем там линух и еще десяток осей одновременно, и все они сразу хост, а гость у нас один - винда? :-)
[01:26:59] <divan> ставит все по местам кто хозяин а кто гость :)
[01:27:20] <divan> рулит пользователь
[01:27:33] <vаlexey> слой поддержки Host-оси в ББ называется Host, что как бы намекает.
[01:27:44] <vаlexey> Ominc таки придерживался классической терминологии
[01:27:54] <divan> нет, нет Host,
[01:28:10] <divan> это и есть хозяин
[01:28:14] <divan> в этом случае
[01:28:19] <divan> а винда гость :)
[01:28:32] <vаlexey> не, HostFiles и так далее - это же тонкие обертки над WinAPI
[01:28:57] <divan> Где для винды тонко, там для Линукса толсто
[01:29:12] <divan> про это Петр и критикует, что много взяли от системы слишко
[01:29:12] <vаlexey> не важно, факт что HostFiles это суть винда.
[01:29:22] <divan> вот это и грустно :)
[01:29:50] <vаlexey> Ну, если убрать у ББ винду, то получится довольно бесполезная штука :-)
[01:29:57] <divan> например HostFiles не предполагает плюшки Linux ФС
[01:30:00] <vаlexey> Ну, то есть Project Oberon и то полезней будет :-D
[01:30:25] <vаlexey> ну, дык HostFiles<-Files
[01:30:33] <divan> нет, абстракции продуманы так, что винда рядом не валялась
[01:30:45] <vаlexey> Files реализует системонезависимую абстракцию файлов
[01:31:01] <divan> а HostFiles допускает замену хоть на облачное хранилище
[01:31:03] <vаlexey> ну то есть убогую конечно в плане фич, зато единую для всего.
[01:31:09] <vаlexey> угу
[01:31:21] <vаlexey> правда при этом облачное хранилище будет хреново использоваться
[01:31:32] <divan> не факт
[01:31:41] <vаlexey> ибо как ни крути, если хочешь эффективно, нужно вникать в тонкости данного конкретного механизма.
[01:31:41] <divan> смотря кто реализует :)
[01:31:57] <divan> все тонкости оставь в хосте
[01:32:01] <vаlexey> а без разницы. если у нас единая абстракция для ВСЕГО, то оно малоэффективно
[01:32:11] <vаlexey> и не имеет ряда вкусных фич конкретных платформ
[01:32:18] <vаlexey> с эти уже 100500 раз я сталкивался везде
[01:32:20] <divan> а это уже философский спор неочем
[01:32:38] <divan> спасибо за ошибку :) s→zzz
[01:32:54] <vаlexey> другое дело что сами базовые независимые механизмы в ББ нужно бы побогаче сделать
[01:33:13] <vаlexey> а то нужно мне было 30 fps видео показывать - пришлось на уровень WinAPI лезть
[01:33:24] <vаlexey> чтобы значится таймер завести быстрее.
[01:33:39] <vаlexey> ибо по умолчанию он там о-очень слоупочно щелкает.
[01:36:18] <vаlexey> http://oberspace.dyndns.org/index.php/topic,496.msg16363.html#msg16363
[01:36:22] <vаlexey> вот примерно так
[01:36:52] <vаlexey> и это не потому что архитектура кривая, а потому что базовый родной функционал каркаса беден.
[01:37:56] <vаlexey> если чего-то не хватает, то будут регулярно появляться вот такие вот зависимости напрямую от оси.
[01:39:01] <TRUE> <divan> а винда гость :)
Винда никак не гость. Проверить очень просто: удали-ка все Host... посмотри, кто продолжит работать, а кто загнётся.
[01:39:46] <divan> ты в доме хозяин или холодильник :) погляжу как ты без еды загнешься
[01:40:02] <vаlexey> можно еще не host-guest терминологию применять, а master-slave :-) так вот, винда - это master
[01:40:16] <divan> винда обеспечивает нижний уровень, но она под контролем абстракций System и Std
[01:40:29] <divan> беда в том, что они проэктировались с оглядкой на винду
[01:40:52] <TRUE> <divan> а HostFiles допускает замену хоть на облачное хранилище
Не хватало ещё, чтоб не допускал...
Но чтобы доступиться к облачному хранилищу, надо добраться до виндовых сокетов. Иначе - бай-бай.
[01:40:55] <vаlexey> на мак еще. наверно было бы полезно вам посмотреть на маковскую версию ББ
[01:40:58] <vаlexey> старомаковскую
[01:41:16] <vаlexey> 1.3 вроде
[01:42:25] <TRUE> <divan> ты в доме хозяин или холодильник :) погляжу как ты без еды загнешься
Холодильник мне еду не предоставляет.
[01:42:42] <divan> да может вы и правы, но мне так прикольнее думать, когда все наоборот
[01:42:57] <divan> мне так понятнее с точки зрения портирования
[01:43:01] <vаlexey> оно прикольно но приводит к путанице
[01:48:11] <vаlexey> а по факту тут ББ ничем не отличается от любой проги на С++ :-) пишу я значится текстовый редактор на С++, или игрушку - винда тоже гость? :-)
[01:49:32] <TRUE> <divan> винда обеспечивает нижний уровень, но она под контролем абстракций System и Std
В том-то и смысл хоста - обеспечивать. Ты приходишь в гостиницу, и хозяин обеспечивает тебя ночлегом.
И BlackBox Component Builder как приложение, написанное для работы в MS Windows, управляется этой ОС. Другое дело, что на активность, различаемую ББ внутри себя, ОС уже не влияет никак.
[01:50:38] <TRUE> *активность, которую ведёт Блэкбокс внутри себя, ОС уже не замечает
[01:50:49] <vаlexey> Ну, повлиять таки может. например винда может себе установить критические обновления и перегрузиться :-D
[01:50:55] <vаlexey> гостиница закрыта на ремонт!
[01:51:19] <vаlexey> ну а поскольку ББ оперирует тяжеловесными окнами внутри себя, винда тоже про них в курсе
[01:51:22] <TRUE> это влияние не на внутреннее поведение, а на запущенное приложение
[01:51:31] <vаlexey> и им можно там сообщения послать например :-) извне
[02:09:48] <divan> вами блин windows что-ли управляет?
[02:10:33] <divan> в идеале, есть приложение на флешке, пришел в гости и срать какая там ОС, воткнул и погостил на ней, сделав свою работу.
[02:10:58] <divan> пользователя центризм ё-моё :)
[02:11:40] <geniepro> давно замечал, что у блекбоксёров вообще любовь к нестандартному трактованию стандартных терминов. они похоже словарь по вычислительной технике в руках не держали...
[02:12:01] <divan> я честно не держал, я ж не программист :)
[02:12:06] <vаlexey> ну да, ты пришел в госте - ты гость. флешка твоя - гость. и ББ на ней тоже гость :-)
[02:12:08] <geniepro> think different млин
[02:12:52] <divan> но книжку по "паттернам проэктирования" и "алгоритмы и структуры данных" прочитал :)
[02:13:17] <vаlexey> geniepro: я тоже сим недугом поражен :-) вот скажем C# у меня - это неуправляемый язык, а C++ -- управляемый!
[02:13:42] <vаlexey> Ибо шарповым кодом управляю не я а хз. что :-) там даже рукми памятью не поуправлять нормально!
[02:13:45] <vаlexey> ужас же!
[02:13:46] <vаlexey> ;-)
[02:19:34] <vаlexey> geniepro: http://habrahabr.ru/post/121246/
[02:19:36] <vаlexey> :-)
[02:22:32] <vаlexey> блин. извращенцы! они описывают схему не на VHDL или Verilog, а на Haskell'e!
[02:22:39] <vаlexey> А затем компилируют это дело в VHDL
[02:22:55] <vаlexey> УЖАС!
[02:41:48] <TRUE> Из википедии про MMIX
"At the same time I was careful to include all of the complexities needed to achieve high performance in practice"
[02:57:48] <geniepro> редюсерон -- это же старый баян уже ))
[03:02:27] <geniepro> vаlexey> блин. извращенцы! они описывают схему не на VHDL или Verilog, а на Haskell'e!
а в чём проблема-то?
[03:05:45] <vаlexey> geniepro: проблема в том, что они извращенцы!
[03:06:03] <vаlexey> вместо того чтобы использовать инструменты специально для этого предназначенные, они пользовали хаскель!
[03:06:28] <geniepro> ну и правильно! вместо ассемблера нужно пользоваться более высокоуровневыми языками ))
[03:08:17] <vаlexey> дык куда уж высокоуровневей vhdl то? ну или того же verilog'a :-)
[03:11:36] <geniepro> ну, если (допустим) одна строка на хаскелле заменит десяток строк на верилоге или вхдл, то хаскель будет выше уровнем
[03:11:57] <geniepro> какие средства абстрагирования в верилоге?
[03:15:15] <geniepro> http://habrahabr.ru/post/205188/
"За последние два года в Кувейте частные лица пожертвовали сотни миллионов долларов на вооружение и подготовку группировок, сражающихся с войсками Башара Асада в Сирии. И это в стране с населением не более 3-х миллионов человек!"
[03:16:21] <vаlexey> geniepro: хез. я верилог знаю на довольно примитивном уровне
[03:16:37] <vаlexey> а какие средства абстрагирования в Хаскелле в плане проектирования аппаратуры?
[03:16:52] <geniepro> да любые, на какие хватит фантазии )
[03:17:00] <vаlexey> например? :-)
[03:17:14] <vаlexey> ведь написанный код НИКОГДА не исполняется ;-)
[03:17:57] <geniepro> что такое програамирование FPGA?
[03:18:30] <vаlexey> это скорее проектирование и конфигурирование
[03:18:57] <vаlexey> короче, надо хоть книжечку по Verilog'у прочесть какую-нибудь шоле
[03:35:54] <geniepro> "программирование" FPGA (их конфигурирование) -- по сути разновидность декларативного программирования, и тут хаскель подходит куда лучше, чем теже си или ада
[03:36:25] <vаlexey> а разве на Си или Аде кто-то пытается их проектировать? :-)
[03:38:15] <geniepro> ну да, SystemC. например
[03:38:45] <geniepro> а ещё Ада (как и Си) послужили прототипами для VHDL (и верилога)
[03:39:07] <vаlexey> Не послужили
[03:39:17] <vаlexey> оттуда взяли только чутка синтаксиса.
[03:39:24] <vаlexey> семантика кардинально другая
[03:39:31] <vаlexey> ничего похожего в принципе
[03:40:09] <geniepro> тем не менее, тот же верилог унаследовал от сей некоторые его проблемы
[03:40:24] <geniepro> чисто из-за дебильного сишного синтаксиса
[03:41:08] <vаlexey> синтаксис вторичен. с сями там ничего общего
[03:41:19] <vаlexey> скорее уж там на паскаль смахивает синтаксически :-)
[03:41:25] <vаlexey> с теми же проблемами ;-)
[03:41:34] <vаlexey> по крайней мере блоки - оттуда
[03:47:08] <geniepro> Зефиров писал об этом, ещё раньше я видел статьи об этом
[03:48:06] <vаlexey> о чем?
[03:48:26] <geniepro> о сишных проблемах верилога
[03:49:16] <geniepro> или скажем так: о некоторых проблемах, возникающих при работе на верилоге из-за синтаксиса, скопированного у сей
[03:50:38] <vаlexey> да ладно, круто же! код пишется легко и быстро!
[03:50:51] <vаlexey> не то что VHDL :-) VHDL даже читать больно.
[03:51:18] <geniepro> ага, а потом дооолго отлаживается из-за дебильных мелочей, которых не было бы, будь синтаксис не сишным, а более адекватным )
[03:51:43] <geniepro> нужен питоно-хаскелеподобный синтаксис )
[03:52:50] <vаlexey> отлаживаться? :-)
[03:53:14] <vаlexey> алсо вот именно из за синтаксиса даже не в верилоге, а просто в Си у меня проблем не было как минимум лет 5.
[03:53:30] <vаlexey> где там вообще на проблемы можно наступить если не совсем нуб и не паскалист?
[03:54:02] <vаlexey> вообще в плане синтаксиса и у других проблем не видел
[03:54:17] <vаlexey> видел только один раз проблему из за приоритета операций. но это ж не синтаксис :-D
[03:54:18] <geniepro> а у тебя насколько большой опыт в верилоге?
[03:54:33] <vаlexey> примерно ноль. :-)
[03:54:43] <vаlexey> буду enlarge его
[03:54:54] <geniepro> ну тогда да, проблем не видел )))
[03:56:06] <vаlexey> я же про сишный код сейчас говорил
[03:56:11] <vаlexey> при чем тут верилог?
[03:56:30] <vаlexey> по идее, в Си то у меня должны быть ну просто каждый день проблемы из за ужасного синтаксиса :-D
[03:59:31] <geniepro> при наличии достаточно большого опыта и на брейнфаке проблем не будет )
[04:00:00] <vаlexey> наврятли
[04:00:25] <vаlexey> проблему с синтаксисом, классическую вот в Сях я видел вообще ровно один раз
[04:00:40] <vаlexey> - поставили ; после if'a.
[04:00:58] <vаlexey> но там было ужасно - там программист не умел пользоваться отствупами в принципе
[04:01:15] <vаlexey> а весь код был засунут в одно огромадную функцию. Borland C++ Builder + VCL
[04:01:19] <vаlexey> Ужас-ужас там был.
[04:01:58] <vаlexey> больше сишных косяков в плане синтаксиса не упомню. ни у меня ни у новичков-студентов. чтобы нужно было долго-долго отлаживаться.
[14:38:10] <geniepro> ку
[16:19:52] <TRUE> ка
[17:48:33] <geniepro> млять у меня флашгет глючит или это большая часть сайтов нынче не поддерживает докачку файлов???
[17:49:23] <geniepro> остаётся укачать последние несколько процентов файла -- и закачка срывается!!!
[18:50:49] <geniepro> хм а походу нифига в виртовском чипе не 16 инструкций, а нааамногог больше
[19:22:25] <geniepro> в виртовском чипе грубо говоря 64к опкодов ))) о_О
[19:33:43] <geniepro> система команд виртовского чипа такая же несуразная, как и оберон, а описание вполне соответствует духу описания оберона -- хер поймёшь виртовские недоговорки
[19:34:18] <geniepro> в опкодах арифметических операций не описан смысл бита u
[19:34:48] <geniepro> не описан порядок следования битов
[19:35:17] <geniepro> какие-то микрооптимизации
[19:51:37] <geniepro> не могу найти команды вызова подпрограммы и выхода из подпрограммы, не говоря уж о прерываниях
[19:52:19] <vаlexey> geniepro: прерывания это не фича проца
[19:52:37] <vаlexey> зачем тебе команда вызова процедуры? тебе что, jmp мало?
[19:52:48] <geniepro> хотел было сделать эмулятор этого чипа, но какой-то он переусложнённый и при этом неполноценный
[19:53:20] <vаlexey> верилоговские исходники именно что проца есть. то есть ALU и прочее.
[19:53:29] <vаlexey> это то как раз можно глянуть.
[19:53:35] <geniepro> а де они?
[19:54:03] <vаlexey> http://www.inf.ethz.ch/personal/wirth/FPGA-relatedWork/index.html
[19:54:16] <geniepro> можно, конечно, эмулировать процедуры готушками как в бейсике, но нужно ли?
[19:54:54] <vаlexey> какие гоутушки? фрейм положил на стек, и джампнулся
[19:55:02] <vаlexey> нафига вызов процедуры в проц зашивать?
[19:55:37] <geniepro> там получается R15 -- типа регистра возврата, адреса выхода из процедуры хранятся в регистре, а не в стеке... типа стек глубиной 1
[19:56:11] <vаlexey> стек на уровне процессора вообще не нужен
[19:56:17] <vаlexey> стек - это чисто языковые придумки
[19:56:23] <geniepro> то есть ты предлагаешь делать жёсткий инлайнинг всех процедур?
[19:56:24] <vаlexey> софтовые придумки
[19:56:29] <vаlexey> зачем?
[19:56:36] <geniepro> ну а как???
[19:56:51] <geniepro> есть стандартные принципы, какого хера их тут нарушили???
[19:56:54] <vаlexey> в смысле? ну кладешь в стек фрейм, стеком назначаешь область памяти от сих до сих и все.
[19:57:02] <geniepro> какой ещё фрейм???
[19:57:03] <vаlexey> это и есть стандартные принципы :-)
[19:57:44] <vаlexey> короче, я не понимаю какие тут могут быть проблемы. см. как в компиляторе сделано.
[19:57:47] <geniepro> короче, чем больше связываешься с виртовскими поделиями -- будь то его чип или его языки -- тем больше время теряешь на эту херню
[19:57:55] <geniepro> всё неправильно
[19:58:04] <geniepro> всё надо делать не так, как у вирта
[19:58:23] <geniepro> вирт портит мозги учащимся хуже любого фортрана или бейсика
[19:58:44] <vаlexey> вообще я мало где видел вообще наличие какого-то там стека.прям в железе. да и даже на x86 стеком поддержанным процом все чаще отказываются
[19:58:49] <vаlexey> ибо нахрен не нужен.
[19:58:54] <vаlexey> что в go, что в плюсах
[19:59:07] <geniepro> есть такое понятие как указатель стека -- это и есть стек в железе
[20:00:09] <vаlexey> нинужен
[20:00:26] <geniepro> в виртовском чипе придётся заводить указатель стека в программе, вместо использования стандартного
[20:00:33] <geniepro> опять закат солнца вручную
[20:00:45] <vаlexey> да положи в регистр и радуйся. делов то.
[20:01:08] <vаlexey> нахови там какой-нибудь Rn этим самым SP и все.
[20:01:10] <geniepro> короче, ну его нахрен всю эту херню
[20:01:25] <geniepro> R15 вроде как под манипуляции с адресами
[20:01:52] <geniepro> у вирта что язык говно, что чип -- тоже говно, и операционка у него говном вышла
[20:01:58] <geniepro> говнокодер короче
[20:02:46] <vаlexey> погоди, а какие у тебя были ожидания то?
[20:03:11] <vаlexey> ясно и очевидно что проц от Вирта будет тормозным и не удобным. Ибо таким и планировался и другим быть не может.
[20:03:21] <geniepro> да уже никаких
[20:03:30] <vаlexey> То есть он будет достаточно простым в реализации, маленьким, но тормозным и достаточно неудобным.
[20:03:35] <geniepro> что ещё можно было ожидать от этого старого маразматика?
[20:03:45] <vаlexey> фи, как грубо!
[20:06:06] <vаlexey> у него задача была - сконструировать полностью обозримый компьютер. от железа до прикладух. Обозримый - значит все должно быть описано в тоненькой книжечке страниц на 300. И с этой задачей он более-менее справился. Хотя описание железа конечно там не полно - исходников нет. Да и опечаток много.
[20:11:07] <geniepro> http://habrahabr.ru/post/132486/
[20:15:08] <vаlexey> какие-то картинки не понятные. исходник где на Верилоге или VHDL?
[20:17:08] <geniepro> он свой процессар рисовал в редакторе схем же
[20:17:39] <geniepro> старым добрым ламповым способом, никакого программирования, чисто чертёжная работа )
[20:17:59] <vаlexey> брр. фу.
[20:18:00] <vаlexey> бее
[20:18:06] <vаlexey> это так низко!
[20:18:36] <geniepro> для этого процессора надо делать программы в дракон-редакторе ))
[20:20:31] <vаlexey> дракон-редактор это как раз низко и есть. низкоуровнево. фу. фи. бее.
[20:20:51] <geniepro> кстати, разработчики DEC Alpha опказали всему миру, что автоматическая разводка процессоров -- туфта, только вручную, только хардкор )
[20:21:52] <geniepro> благодаря этому они могли делать процы, работающие на сверхвысоких по тем временам частотах -- чипы на стероидах )
[20:22:30] <vаlexey> они как раз показали что так делать нельзя ни в коем случае - ибо они обанкротились нафиг
[20:23:54] <geniepro> да нифига, до банкротства они успели поставить раком всяких интелей, те тоже начали вручную разводить свои камни
[20:24:13] <vаlexey> но не на долго :-)
[20:26:27] <geniepro> Подпрограммы
Перед тем как завершить обзор архитектуры PDP-8, имеет смысл немного задержаться на подпрограммах, их вызовах и, главное, на возврате из подпрограмм в вызывающий код.
Причина, почему я на этом останавливаюсь, проста – в PDP-8 нет стека. Конечно, его можно эмулировать программно, но это совсем другой вопрос. Главное, что аппаратный стек в архитектуре PDP-8 отсутствует. Плохо это или нет, я здесь обсуждать не буду (скорее плохо, поскольку стек очень уж «полезная» часть архитектуры компьютера). Как же в таком случае использовать подпрограммы (вспомните, при обсуждении операций работы с памятью я перечислил в числе прочих и операцию вызова подпрограммы)? Передать управление подпрограмме, очевидно, несложно: по сути, это безусловный переход в нужную точку программы. А вот как вернуться назад, не имея стека, проще говоря – где и как сохранить адрес возврата?
Можно, конечно, выделить в памяти определенную ячейку памяти и перед вызовом подпрограммы сохранять в ней нужное значение программного счетчика. Но если вызовов подпрограмм несколько, то в этой ячейке будет сохранено только последнее значение программного счетчика – все остальные будут безвозвратно затерты.
Конструкторы PDP-8 нашли элегантное, хотя и необычное, решение: адрес возврата должен храниться в самой подпрограмме! Конечно, это не стек (скажем, при таком способе организации подпрограмм неизбежно возникнут проблемы с рекурсивными вызовами), но зато при таком способе подпрограмма сама «знает», куда надо передать управление по окончании своей работы. Проще показать все это на примере (для наглядности в левой колонке я указал восьмеричные адреса памяти, по которым располагается этот фрагмент программы) (см. рис. 11).
http://www.samag.ru/archive/article/1990
[20:27:13] <geniepro> тоже та ещё жесть
[20:30:24] <geniepro> как, интересно, поддерживаются многозадачные ОС? опять же как возвращаться из подпрограмм, если их крутится множество одновременно...
[20:30:47] <geniepro> MMU эмулирует для каждой задачи собственную память?
[20:31:11] <vаlexey> если подходить очень упрощенно - да.
[20:31:19] <vаlexey> отдельное адресное пространство
[20:51:37] <geniepro> vаlexey> ясно и очевидно что проц от Вирта будет тормозным и не удобным. Ибо таким и планировался и другим быть не может.
вот этот тезис я не понял. сомневаюсь, что вирт специально планировал и делал свой процессор тормозным. смысл?
[20:52:46] <vаlexey> он про это даже написал
[20:53:01] <vаlexey> наивная простая реализация процессора ВСЕГДА будет тормозной относительно промышленной реализации.
[21:40:34] <geniepro> ну понятно, что в промышленных процессорах всякие конвейеры, суперскалярности и прочее
[21:40:57] <geniepro> но это же не значит, что Вирт вставлял циклы задержки в свой чип
[21:50:33] <vаlexey> не вставлял. но один фиг процессор слоупочный.
[21:50:40] <vаlexey> ибо простой. чем проще - тем медленней :-D
[22:18:26] <vаlexey> это все равно что когда пишешь сортировку написать её пузырьком - ибо так короче и проще. а в качестве структур данных использовать только массивы и односвязные списки. Проще. Кода меньше. Но медленней.