- 1
- 2
- 3
https://www.researchgate.net/publication/325358150_cQASM_v10_Towards_a_Common_Quantum_Assembly_Language
cQASM v1.0: Towards a Common Quantum Assembly Language
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
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
Хоть этот cQASM к сожалению не совсем настоящий ассемблер, а просто абстракция чтоб между разными квантовыми компьютерами код сделать переносимым, и настоящие Цари конечно же будут писать на платформозависимом квантовом ассемблере, это все ж лучше какого-то шарпоговна.
Но всё же я за S" Forth", в нём можно когда угодно переклюсатся между копеляцией и интрепретацией. Можно даже со store и load модификать уже собранный код.
Недерьмированность кванпуктеров позволяет как бы параллельно считать разную вычислюшню, что полезно.
К сожалению фпга на ходу не реконфигурятся, так что весь потенциал форта так не раскрыть :(
> 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 тысячами гейтов или даже больше).
Есть даже специальный клеточный автомат для эмуляции на нем всяких диодов и логических элементов https://en.wikipedia.org/wiki/Wireworld и на нем можно свой проц даже написать https://www.quinapalus.com/wires11.html
Навіщо розмовляєте свинячою?
Ладно, "форте" - имя собственное, но эта "автомата" - мерзкий латинизм.
На вперёде.
Ну то молоток. Молоток ничем не улучшить. А вот какие-нибудь радиоэлектронщики любят пообсуждать, какой паяльник лучше брать, какую там паяльную станцию, и вот брать ли вот тот или тот осциллограф, и прочую такую хуету.
Заедушные питушки программисты. Живут в своём мире и думают, что у них всё круче и высокотехнологичней.
Молоток ничем не улучшить. Молоток ничем не улучшить? Вы слышали? Молоток ничем не улучшить...
Во-первых, какой из множества видов молотков?
Во-вторых, всегда можно предложить новый материал, который, например, не будет мяться от забиваемых гвоздей.
В-третьих - сбалансировать плотности и распределение масс так, чтобы отдача была меньше, аэродинамика была лучше и т.д.
В-четвёртых - форма ручки. Отливать точно по руке. Или сделать трансформирующуюся ручку для изменения формы молотка. Не помешает продумать момент, когда молотком особо не помашешь, либо гвоздь заглубили.
Если молоток используется для редких работ, не требующих больших нагрузок - можно совместить ручку молотка и ручку для отвёртки с битами, чтобы меньше питушни с собой таскать.
Кстати о массе: поиск наиболее эффективно работающего походного молотка с минимальной массой и удобной формой, возможность переиспользования в другом инструменте.
И многое другое.
Наколются своим жс и пердолются серверу в порты.
Дыра в стене не лечится откатом на предыдущий коммит.
И историю коммитов тоже не перепишешь: все будут смотреть на стену и помнить твой зашквар.
Приходится думать прежде, чем стучать.
Можно повесить что-нибудь на это место и выдать за фичу.
Тут всё как в C++: конструктор - это специальная функция, на способ вызова которой налагаются ограничения.
Да и чисто математически конструктор - это отображение из декартова произведения областей определения аргументов в пространство значений сконструированного объекта. То есть функция.
> this так странно себя ведет
Здесь, кстати, прогресс идёт. Даже бароп об этом писал. В стрелочных функциях расово верный семантически правильный this.
Осталось сделать простой способ выразить object.method.bind(object), но не теряя возможности взять чисто object.method как в C++ без питоничного зашкваривания this-а объектом.
Имхо, проще сменить этот пароль и забить.
> Во-вторых, всегда можно предложить новый материал, который, например, не будет мяться от забиваемых гвоздей.
> В-третьих - сбалансировать плотности и распределение масс так, чтобы отдача была меньше, аэродинамика была лучше и т.д.
Где-то я уже это читал. https://habr.com/post/141477/
— Как выяснилось, если сделать только один тип молотка, способный выполнять те же задачи, что и все виды молотков, тогда он будет не очень хорош для каждой из них. Забивать гвозди кувалдой не очень эффективно. И если Вы хотите убить свою бывшую девушку, то ничто не заменит молотка с круглым бойком.
— Верно. Но если никто больше не покупает Универсальные Молотки и если Вы больше не продаете все старомодные типы молотков, то какие же молотки Вы продаете?
— Вообще-то, мы не продаем никакие молотки.
— Но…
— Наши исследования показали, что людям совсем не нужен Универсальный Молоток. Всегда лучше использовать нужный тип молотка для работы. Поэтому, мы начали продавать фабрики молотков, способные создать любой молоток, какой Вам нужен. Все что Вам нужно — это укомплектовать фабрику рабочими, запустить механизм, купить сырье, оплатить расходы и — БАЦ — у Вас есть именно такой молоток, какой Вам нужен.
— Но мне как-то не хочется покупать фабрику молотков…
— Это хорошо. Потому что мы их больше не продаем.
— Но Вы же только что сказали…
— Мы обнаружили, что большинству людей не нужна целая фабрика. Некоторым людям, например, никогда не понадобится молоток с круглым бойком. (Может у них нет бывших девушек. Или они убили их ледорубом.) Поэтому, нет смысла кому-либо покупать фабрику молотков, которая может произвести любой тип молотка.
— Да, похоже на то.
--Да нахуй тебе что-то железное, и зачем вообще что-то приобретать? Вон там у мусорки всякий строительный мусор валяется, соседи ремонт делали. Возьми там какой-нибудь кусок камня поувестсией, и забей им свой гвоздь. А то руда, делать еще что-то.
--ОК, заебись.
подбирает какой-то камень с мусорки, забил им гвоздь и потом этот камень выкинул нахуй, т.к. больше ему гвоздей забивать не надо, и вытаскивать гвоздей тоже не надо
> Одну текущую задачу сначала показали «плюсовику», спросив, сколько займёт её решение. Он сказал: «Здесь нужно писать могучий движок. Короче говоря, это проект на полгода». Его коллега-«сишник» поинтересовался: «А зачем?» Ведь поставленная задача укладывается в сотню строк кода! Ответ был ошеломляющим: «Ну и что, мы так и будем по сотне строк кода писать для решения частных задач, каждый раз, как они возникают? Нетушки, задачи надо решать раз и навсегда!».
> По моему глубокому личному убеждению, проблемы нужно решать по мере их возникновения. Писать программы на вырост с избыточным универсализмом нужно лишь очень хорошо предварительно подумав, ибо это из серии «Почему сегодня не делают корабли, летающие к звёздам?» Ответ прост: потому что корабль, построенный завтра, прибудет быстрее, а корабль, построенный послезавтра, еще быстрее. И их обоих обгонит корабль, построенный лет через пятьдесят, но когда он вернётся обратно, то обнаружит, что у человечества совсем другие проблемы».
Поэтому я за Си.
А потом ты приходишь на новое место работы, а там файлы по несколько тысяч строк кода, реализующие с десяток таких "задач" каждый
Да даже ссаный вектор или джвусвязный кольцевой список...
И готовые реализации могут не подходить по каким-то критериям
На всяких контроллерах весь этот STL сразу нахуй отправляется, потому что в хуй не всралось мне тащить всякие эксепшены и прочий крестомусор
ПХП отлично работает в огромном количестве проектов например. На ПХП написан вконтакт и фейсбук. Кто ты такой чтоб критиковать ПХП?
> А еще там не нужен json, xml, rest, http, и много чего еще
В контроллерах как раз иногда пригождается json и http. Я json через sprintf генерил на контроллере для отправки на http сервер POST запросом.
Зачем реализовывать, если можно скопипастить из стековерфлоу?
-- Говно воняет. Мне не нравится вид говна и его запах.
-- Ты просто неосилятор. У тебя религиозная непереносимость говна. Это не показатель, ты предвзят.
Нет. Попробовав почитать стандарт крестов, попробовав почитать реализацию стандартной библиотеки крестов, попробовав почитать boost и прочие убогие попытки метапрограммирования, и попробовав самому этим метапрограммированием позаниматься
В случае с крестами я хотел таким способом понять уровень трудоемкости создания тех абстракций на крестах, которые есть в стандартной библиотеке, и насколько это все читаемо. Мне не понравилось.
Еще мне механизм обработки исключений не понравился, и RAII не понравилось, и RTTI. И много чего еще, о чем я могу долго рассказывать, но не буду.
Мне больше нравится управлять ресурсами самому в явном виде, я тогда четко понимаю, какое там говно происходит и в каком порядке.
https://govnokod.ru/24517
И есть даже GNU расширение, которое вызывает некое говно при выходе из скоупа https://govnokod.ru/25526
Повторюсь, RAII это не то что, что мне сильно не нравится
> Например, как эта хуйня будет работать если я выпрыгну через goto из блока, где область видимости существует?
Все деструкторы вызовутся как надо.
> А что насчет setjmp-longjmp?
Не вызовутся — это слишком лоу-левельная фигня даже по меркам крестов.
> А в каком порядке будет вызываться деструкторы для RAII хуйни, если RAII хуйни было много, и порядок вызова деструкторов имеет значение?
Это мне больше всего нравится: деструкторы будут вызваны в порядке, строго обратном вызову конструкторов.
https://ideone.com/YrPQo7
>> Повторюсь, RAII это не то что, что мне сильно не нравится
Ну ладно. Давайте ругать «крестовое метапрограммирование».
Вот кстати не думаю что это правильно. Может я хочу чтоб у меня деструкторы и конструкторы многопоточно запускались, работая одновременно. Или чтоб порядок был implementation-defined и компилятор на этом мог каким-то образом сэкономить пару тактов. Или еще хуйпойми как.
Ну, если GPU имеет прямой доступ к основной оперативной памяти, почему б и нет? Может там в деструкторах мы какие-то картинки рендерим
> Все деструкторы вызовутся как надо.
Только если это не особый goto с https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
https://ideone.com/lpT99r
jump exits scope of variable with non-trivial destructor
А когда просто обычный goto, все деструкторы вызываются как надо и никакой хуйни нет.
Как так? «RAII» — это одна из немногих фишек крестов, которая сделана удобно и правильно.
Бывают отличные API на %язык1%, и полное дерьмо на %язык2%
Я вполне могу себя контролировать и решать конкретные задачи и на крестах. Поэтому ебал я вашу сишечку.
Решать конкретные задачи можно хоть на PHP, но это не значит что в PHP есть что-то хорошее.
Ну а проблемы крестов в области нагромождения всяких абстракций вполне известны и изучены, не буду повторяться.
RAII и немного шаблонов в их изначальном предназначении. Ну и интерфейсы не надо велосипедить из говна и палок когда они понадобятся.
Вполне удобно и предсказуемо.
Нужно придумать общий язык, чтобы объединить их всех и лишить их воли.
...
Существует N+1 языков.