1. Assembler / Говнокод #25239

    +2

    1. 1
    2. 2
    3. 3
    https://www.researchgate.net/publication/325358150_cQASM_v10_Towards_a_Common_Quantum_Assembly_Language
    
    cQASM v1.0: Towards a Common Quantum Assembly Language

    The quantum assembly language (QASM) is a popular intermediate representation used in many quantum compilation and simulation tools to describe quantum circuits. Currently, multiple different dialects of QASM are used in different quantum computing tools. This makes the interaction between those tools tedious and time-consuming due to the need for translators between theses different syntaxes. Beside requiring a multitude of translators, the translation process exposes the constant risk of loosing information due to the potential incompatibilities between the different dialects. Moreover, several tools introduce details of specific target hardware or qubit technologies within the QASM syntax and prevent porting the code to other hardwares. In this paper, we propose a common QASM syntax definition, named cQASM, which aims to abstract away qubit technology details and guarantee the interoperability between all the quantum compilation and simulation tools supporting this standard. Our vision is to enable an extensive quantum computing toolbox shared by all the quantum computing community.

    Вот это я понимаю, а то вон там мелкософт какие-то говношарпы придумывает очередные:

    https://docs.microsoft.com/en-us/quantum/language/?view=qsharp-preview


    Нахер ваши шарпы с вашим сраным дуднетом и прочей такой хуйней, даешь Assembler.

    Запостил: j123123, 28 Декабря 2018

    Комментарии (187) RSS

    • А то вот понапишут какие-нибудь анскиллябры каких-нибудь анскильно-заедушных компиляторов для квантовых процессоров, и хрен кто поймет, почему оно там тормозит. Потому что анскиллябры заедушные, ассемблера не видавшие
      Ответить
      • > In this paper, we propose a common QASM syntax definition, named cQASM, which aims to abstract away qubit technology details and guarantee the interoperability between all the quantum compilation and simulation tools supporting this standard.

        Хоть этот cQASM к сожалению не совсем настоящий ассемблер, а просто абстракция чтоб между разными квантовыми компьютерами код сделать переносимым, и настоящие Цари конечно же будут писать на платформозависимом квантовом ассемблере, это все ж лучше какого-то шарпоговна.
        Ответить
    • Я не против, в ассемблерах обычно препроцессор нормяльный, инсьрукции для повторения болклов кода, макросы годные и пепеменные времени копуляции ест. Например фасм:
      macro def  name, flags, lbl {
          local l
      l:
          db flags or (@f-$-1), name
      @@:
          dw prev_word
          prev_word = l
      lbl:
      }
      Можно даже со store и load модификать уже собранный код.

      Но всё же я за S" Forth", в нём можно когда угодно переклюсатся между копеляцией и интрепретацией.
      Ответить
      • Ну ладно, про Си и так понятно, можно и не спрашивать. А есть ли в говноплюсах переменные времени копуляции?
        Ответить
      • Можно на ассемблере даже написать интерпретатор шитого кода FORTH и потом из ассемблера перейти в интерпретатор шитого кода FORTH на котором можно написать транслятор ассемблера, и потом из FORTH переписать интерпретатор шитого кода FORTH на ассемблере написанном на FORTH в доме который построил Джек
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Они же недерьминированые? Кванпуктеры ети.
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • Обычные - тоже, только в них пишут говнокод и сводят вореятность недерьминирования к малому числу.
          Недерьмированность кванпуктеров позволяет как бы параллельно считать разную вычислюшню, что полезно.
          Ответить
    • не заебались дрочить на инструменты? Какой-нибудь условный слесарь не дрочит же на молоток. Почему программисты не решают задачи, а ебутся со своими язычками, фреймворками и прочей хуйней.
      Ответить
      • Да , нахуя нужны все эти > 9000 языков и 100500 фейлорков когда есть S" Forth" ?
        Ответить
        • Ебаный светильник, ну конечно! О том и речь! Ебать мой лысый череп.
          Ответить
        • Нахуя вообще нужны языки, если можно писать в опкодах процессора, без всех этих языков?
          Ответить
        • Кстати, FORTH уже можно скомпилировать в FPGA-топологию?
          Ответить
          • показать все, что скрытоvanished
            Ответить
          • Написать на форте конпелятор в битстрим. Скомпилить им интерпретатор форта (в виде стейт машины). Профит.

            К сожалению фпга на ходу не реконфигурятся, так что весь потенциал форта так не раскрыть :(
            Ответить
            • Можно на FPGA написать FPGA которая может реконфигурироваться

              http://www.nedopc.org/forum/viewtopic.php?f=68&t=7884&sid=5ea2f9f78d5c13c361e6d231b52d7f23


              > As well as Marko and Damjan's Opencores one,
              > there is Reinoud Lamberts' "open source design for
              > an FPGA to be implemented on an FPGA".
              > Reinoud calls it the MPGA.
              > http://ce.et.tudelft.nl/~reinoud/mpga/README.shtml

              > Т.е. одно из решений добавления открытой структуры в закрытую архитектуру - это реализация на закрытой архитектуре программируемой открытой архитектуры, правда с избыточностью, т.к. прошивка для прошивки будет как бы эмулятором (с другой стороны FPGA уже является псевдо-хардверной эмуляцией через софтверное программирование микровычислителей - LUT-ов).


              > В связи с этим хочется предложить на всеобщее обсуждение идею переконфигурируемого компьютера "Морфеус", который может быть перепрограммирован пользователем (причём с этого же самого компьютера) путём записи некоторых значений в ячейки распределённой памяти (есть в Spartan-3 от Xilinx) для перестраивания сети, содиняющей вместе логические и арифметические блоки, включая умножители 18x18 (есть несколько в Spartan-3 от Xilinx) - пользователю для этого не нужна среда разработки от Xilinx, как и знание VHDL - всё будет делаться "над" конкретной физической реализацией - поэтому с некоторой избыточностью, что можно в той или иной степени скрыть путём использования очень большой FPGA (например Spartan-3 с 200 тысячами гейтов или даже больше).
              Ответить
              • Имхо, джве матрицы, которые могут переконфигуривать друг-друга, будут на порядок эффективнее. Да и проще.
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                • Главное не оказаться в ситуации, когда обе матрицы разучились реконфигурировать друг-друга. Можно особый рекавери сделать на ASIC для этого(на каком-нибудь контроллере например), который бы какую-нибудь FPGA прошивал в аварийных ситуациях, чтобы ей уже можно было другую перешить.
                  Ответить
                  • Ну там флешка для старта всё равно же будет (техпроцесс у FPGA слишком тонкий и не умеет во встроенный флеш). Ребутнёшься с неё. Можно и джве для надёжности, чтобы у каждой матрицы своя была.
                    Ответить
            • Кстати, клеточный автомат (типа Conway's Game of Life) это тоже по-сути такая FPGA, там тьюринг-полнота есть, можно Game of Life написать на самой себе: https://youtu.be/xP5-iIeKXE8

              Есть даже специальный клеточный автомат для эмуляции на нем всяких диодов и логических элементов https://en.wikipedia.org/wiki/Wireworld и на нем можно свой проц даже написать https://www.quinapalus.com/wires11.html
              Ответить
            • > стейт машины
              Навіщо розмовляєте свинячою?
              Ответить
      • > Какой-нибудь условный слесарь не дрочит же на молоток.

        Ну то молоток. Молоток ничем не улучшить. А вот какие-нибудь радиоэлектронщики любят пообсуждать, какой паяльник лучше брать, какую там паяльную станцию, и вот брать ли вот тот или тот осциллограф, и прочую такую хуету.
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • Это как господин bormand?
          Ответить
        • > Ну то молоток. Молоток ничем не улучшить.
          Заедушные питушки программисты. Живут в своём мире и думают, что у них всё круче и высокотехнологичней.
          Молоток ничем не улучшить. Молоток ничем не улучшить? Вы слышали? Молоток ничем не улучшить...

          Во-первых, какой из множества видов молотков?
          Во-вторых, всегда можно предложить новый материал, который, например, не будет мяться от забиваемых гвоздей.
          В-третьих - сбалансировать плотности и распределение масс так, чтобы отдача была меньше, аэродинамика была лучше и т.д.
          В-четвёртых - форма ручки. Отливать точно по руке. Или сделать трансформирующуюся ручку для изменения формы молотка. Не помешает продумать момент, когда молотком особо не помашешь, либо гвоздь заглубили.
          Если молоток используется для редких работ, не требующих больших нагрузок - можно совместить ручку молотка и ручку для отвёртки с битами, чтобы меньше питушни с собой таскать.
          Кстати о массе: поиск наиболее эффективно работающего походного молотка с минимальной массой и удобной формой, возможность переиспользования в другом инструменте.
          И многое другое.

          Наколются своим жс и пердолются серверу в порты.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • > Во-первых работа молотком это дело безусловно более интеллектуальное, чем, например, изготовление вебсайтов на вордпресс.
              Дыра в стене не лечится откатом на предыдущий коммит.
              И историю коммитов тоже не перепишешь: все будут смотреть на стену и помнить твой зашквар.
              Приходится думать прежде, чем стучать.
              Ответить
          • > Во-первых, какой из множества видов молотков?
            > Во-вторых, всегда можно предложить новый материал, который, например, не будет мяться от забиваемых гвоздей.
            > В-третьих - сбалансировать плотности и распределение масс так, чтобы отдача была меньше, аэродинамика была лучше и т.д.

            Где-то я уже это читал. https://habr.com/post/141477/

            — Как выяснилось, если сделать только один тип молотка, способный выполнять те же задачи, что и все виды молотков, тогда он будет не очень хорош для каждой из них. Забивать гвозди кувалдой не очень эффективно. И если Вы хотите убить свою бывшую девушку, то ничто не заменит молотка с круглым бойком.

            — Верно. Но если никто больше не покупает Универсальные Молотки и если Вы больше не продаете все старомодные типы молотков, то какие же молотки Вы продаете?

            — Вообще-то, мы не продаем никакие молотки.

            — Но…

            — Наши исследования показали, что людям совсем не нужен Универсальный Молоток. Всегда лучше использовать нужный тип молотка для работы. Поэтому, мы начали продавать фабрики молотков, способные создать любой молоток, какой Вам нужен. Все что Вам нужно — это укомплектовать фабрику рабочими, запустить механизм, купить сырье, оплатить расходы и — БАЦ — у Вас есть именно такой молоток, какой Вам нужен.

            — Но мне как-то не хочется покупать фабрику молотков…

            — Это хорошо. Потому что мы их больше не продаем.

            — Но Вы же только что сказали…

            — Мы обнаружили, что большинству людей не нужна целая фабрика. Некоторым людям, например, никогда не понадобится молоток с круглым бойком. (Может у них нет бывших девушек. Или они убили их ледорубом.) Поэтому, нет смысла кому-либо покупать фабрику молотков, которая может произвести любой тип молотка.

            — Да, похоже на то.
            Ответить
            • показать все, что скрытоvanished
              Ответить
            • показать все, что скрытоvanished
              Ответить
              • Настоящие Цари забивают и вырывают гвозди телекинезом, без всяких молотков и железных кирпичей, сделанных для анскиллябр заедушных
                Ответить
              • Какой гвоздь )))
                Ответить
              • --Здравствуйте, мне нужно забить гвоздь и я полагаю что мне нужно что-то тяжелое и железное. Где я могу приобрести руду чтобы сделать такую вещь?
                --Да нахуй тебе что-то железное, и зачем вообще что-то приобретать? Вон там у мусорки всякий строительный мусор валяется, соседи ремонт делали. Возьми там какой-нибудь кусок камня поувестсией, и забей им свой гвоздь. А то руда, делать еще что-то.
                --ОК, заебись.

                подбирает какой-то камень с мусорки, забил им гвоздь и потом этот камень выкинул нахуй, т.к. больше ему гвоздей забивать не надо, и вытаскивать гвоздей тоже не надо
                Ответить
                • https://dev.by/news/intervyu-s-krisom-kasperski-aka-mysch-h

                  > Одну текущую задачу сначала показали «плюсовику», спросив, сколько займёт её решение. Он сказал: «Здесь нужно писать могучий движок. Короче говоря, это проект на полгода». Его коллега-«сишник» поинтересовался: «А зачем?» Ведь поставленная задача укладывается в сотню строк кода! Ответ был ошеломляющим: «Ну и что, мы так и будем по сотне строк кода писать для решения частных задач, каждый раз, как они возникают? Нетушки, задачи надо решать раз и навсегда!».

                  > По моему глубокому личному убеждению, проблемы нужно решать по мере их возникновения. Писать программы на вырост с избыточным универсализмом нужно лишь очень хорошо предварительно подумав, ибо это из серии «Почему сегодня не делают корабли, летающие к звёздам?» Ответ прост: потому что корабль, построенный завтра, прибудет быстрее, а корабль, построенный послезавтра, еще быстрее. И их обоих обгонит корабль, построенный лет через пятьдесят, но когда он вернётся обратно, то обнаружит, что у человечества совсем другие проблемы».

                  Поэтому я за Си.
                  Ответить
                  • > Ведь поставленная задача укладывается в сотню строк кода!
                    А потом ты приходишь на новое место работы, а там файлы по несколько тысяч строк кода, реализующие с десяток таких "задач" каждый
                    Ответить
                  • показать все, что скрытоvanished
                    Ответить
                    • > У Криса (царство небесное) просто религиозная непереносимость плюсов (как и у Торвальдса), это не показатель, он предвзят

                      -- Говно воняет. Мне не нравится вид говна и его запах.
                      -- Ты просто неосилятор. У тебя религиозная непереносимость говна. Это не показатель, ты предвзят.
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • Я в этом и без Криса отлично убедился
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • > Попробовав исползовать map в микроконтроллере?

                              Нет. Попробовав почитать стандарт крестов, попробовав почитать реализацию стандартной библиотеки крестов, попробовав почитать boost и прочие убогие попытки метапрограммирования, и попробовав самому этим метапрограммированием позаниматься
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • Чтоб понять, как мне придется ебаться с этим говном, чтоб самому свою реализацию написать
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • Нет, сначала я научился пользоваться сями, потом заинтересовался и немного почитал коды gcc и libc. Иначе я б код gcc и libc не понял
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • It's depends.

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

                                          Еще мне механизм обработки исключений не понравился, и RAII не понравилось, и RTTI. И много чего еще, о чем я могу долго рассказывать, но не буду.
                                          Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • RAII это как раз не самое плохое из того что есть. Идея в том, что когда мы чего-то объявляем, оно в new автоматом выделяет память и как-то инициализирует что-то, когда область видимости переменной кончается - оно дергает delete и чистит говно. В целом подход нормален и имеет право на существование. Что мне не понравилось - что какая-то штука (деструктор) может вызываться неявно просто потому что переменная стала вне области видимости. Например, как эта хуйня будет работать если я выпрыгну через goto из блока, где область видимости существует? Деструкторы перед меткой goto вклинится? А что насчет setjmp-longjmp? А в каком порядке будет вызываться деструкторы для RAII хуйни, если RAII хуйни было много, и порядок вызова деструкторов имеет значение? Куча каких-то ебанутых ньюансов возникает.


                                              Мне больше нравится управлять ресурсами самому в явном виде, я тогда четко понимаю, какое там говно происходит и в каком порядке.
                                              Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • Ну, формально там ничего не является обязательным. Можно свое RAII на сишке накостылить, там ни new ни delete в самом языке нет.
                                                  https://govnokod.ru/24517
                                                  И есть даже GNU расширение, которое вызывает некое говно при выходе из скоупа https://govnokod.ru/25526

                                                  Повторюсь, RAII это не то что, что мне сильно не нравится
                                                  Ответить
                                              • Ну вот как раз эти моменты в Стандарте, ИМХО, реализованы очень хорошо.

                                                > Например, как эта хуйня будет работать если я выпрыгну через goto из блока, где область видимости существует?
                                                Все деструкторы вызовутся как надо.

                                                > А что насчет setjmp-longjmp?
                                                Не вызовутся — это слишком лоу-левельная фигня даже по меркам крестов.

                                                > А в каком порядке будет вызываться деструкторы для RAII хуйни, если RAII хуйни было много, и порядок вызова деструкторов имеет значение?
                                                Это мне больше всего нравится: деструкторы будут вызваны в порядке, строго обратном вызову конструкторов.
                                                https://ideone.com/YrPQo7

                                                >> Повторюсь, RAII это не то что, что мне сильно не нравится
                                                Ну ладно. Давайте ругать «крестовое метапрограммирование».
                                                Ответить
                                                • > Это мне больше всего нравится: деструкторы будут вызваны в порядке, строго обратном вызову конструкторов.

                                                  Вот кстати не думаю что это правильно. Может я хочу чтоб у меня деструкторы и конструкторы многопоточно запускались, работая одновременно. Или чтоб порядок был implementation-defined и компилятор на этом мог каким-то образом сэкономить пару тактов. Или еще хуйпойми как.
                                                  Ответить
                                                • >> Например, как эта хуйня будет работать если я выпрыгну через goto из блока, где область видимости существует?
                                                  > Все деструкторы вызовутся как надо.
                                                  Только если это не особый goto с https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
                                                  https://ideone.com/lpT99r
                                                  Ответить
                                                  • Шланг кстати не хочет это компилировать: https://godbolt.org/z/jK8Ap5

                                                    jump exits scope of variable with non-trivial destructor
                                                    Ответить
                                                    • Там же в другом ошибка. Ты ворнинг привёл.
                                                      Ответить
                                                      • Ворнинг-хуернинг, какая разница? Суть в том, что компилятор clang нихуя не может понять, вызывать ли ему деструкторы или нет для такого goto, хотя тут очевидно надо, учитывая что единственная валидная метка находится вне скоупа тех двух переменных. Ладно если б там я напихал много меток, и этот указатель-на-метку-goto мог быть и на метку внутри скоупа того говна, но ведь нихуя подобного нет.
                                                        Ответить
                                                      • Притом компилятор clang вроде как понимает что переменная с меткой указывает на область вне скоупа тех переменных, но при этом нихуя не компилирует. В том же GCC никаких варнингов и прочей хуйни вообще нет, и деструкторы тупо не вызываются при таком goto.

                                                        А когда просто обычный goto, все деструкторы вызываются как надо и никакой хуйни нет.
                                                        Ответить
                                          • > и RAII не понравилось
                                            Как так? «RAII» — это одна из немногих фишек крестов, которая сделана удобно и правильно.
                                            Ответить
                            • Ты будешь змиятся, но у них там SOAP во всяких DNLA и подобном говне для червей и ДоСа
                              Ответить
                        • А про «PHP» Крис ничего не говорил?
                          Ответить
                    • > Бывают отличные API на плюсах, и полное дерьмо на сях, где автор запутался в собственных сполях, и у него на каждом углу по висячему поинтеру болтается.

                      Бывают отличные API на %язык1%, и полное дерьмо на %язык2%
                      Ответить
                  • > поэтому я за си
                    Я вполне могу себя контролировать и решать конкретные задачи и на крестах. Поэтому ебал я вашу сишечку.
                    Ответить
                    • >Я вполне могу себя контролировать и решать конкретные задачи и на крестах

                      Решать конкретные задачи можно хоть на PHP, но это не значит что в PHP есть что-то хорошее.

                      Ну а проблемы крестов в области нагромождения всяких абстракций вполне известны и изучены, не буду повторяться.
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                      • > что-то хорошее
                        RAII и немного шаблонов в их изначальном предназначении. Ну и интерфейсы не надо велосипедить из говна и палок когда они понадобятся.

                        Вполне удобно и предсказуемо.
                        Ответить
                        • В "PHP" нет никакого "RAII", "шаблонов". А "интерфейсы" мне нахуй не всрались.
                          Ответить
            • https://bonkersworld.net/img/2019.12.02_hammer.png
              Ответить
      • показать все, что скрытоvanished
        Ответить
      • показать все, что скрытоvanished
        Ответить
    • Существует N языков.
      Нужно придумать общий язык, чтобы объединить их всех и лишить их воли.
      ...
      Существует N+1 языков.
      Ответить
    • показать все, что скрыто
      * g o a t s e x * g o a t s e x * g o a t s e x *  
       g                                               g  
       o /     \             \            /    \       o  
       a|       |             \          |      |      a  
       t|       `.             |         |       :     t  
       s`        |             |        \|       |     s  
       e \       | /       /  \\\   --__ \\       :    e  
       x  \      \/   _--~~          ~--__| \     |    x  
       *   \      \_-~                    ~-_\    |    *  
       g    \_     \        _.--------.______\|   |    g  
       o      \     \______// _ ___ _ (_(__>  \   |    o  
       a       \   .  C ___)  ______ (_(____>  |  /    a  
       t       /\ |   C ____)/      \ (_____>  |_/     t  
       s      / /\|   C_____)       |  (___>   /  \    s  
       e     |   (   _C_____)\______/  // _/ /     \   e  
       x     |    \  |__   \\_________// (__/       |  x  
       *    | \    \____)   `----   --'             |  *  
       g    |  \_          ___\       /_          _/ | g  
       o   |              /    |     |  \            | o  
       a   |             |    /       \  \           | a  
       t   |          / /    |         |  \           |t  
       s   |         / /      \__/\___/    |          |s  
       e  |         / /        |    |       |         |e  
       x  |          |         |    |       |         |x  
       * g o a t s e x * g o a t s e x * g o a t s e x *
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий