Как стать автором
Обновить

Комментарии 63

Весьма доходчиво и интересно.

Смущает только: «MMIX является глубоко продуманной архитектурой,… заметно более развитой, чем все широко распространённые на сегодняшний день процессорные архитектуры», хотя в Вики написано: «автор принял решение разработать новый компьютер — MMIX, который является аналогом компьютеров, завоевавших большую часть рынка в 90-х годах XX века.»
В общих чертах — именно аналог. Но в деталях гораздо более развит. Характерный пример — наличие операций Иверсона — матричных OR и XOR. Эти операции очень просто реализуются в железе, однако ни в одной распространённой на сегодняшний день архитектуре не задействованы. При этом у них забубенный потенциал, см. //www-cs-faculty.stanford.edu/~uno/mmix-doc.ps.gz. Таких мелочей там уйма.
Это какая такая бабушка сказала, что в x86 нет XOR?
НЛО прилетело и опубликовало эту надпись здесь
Так всё же, почему производители процессоров не реализуют те же инструкции OR и XOR, но всякие 3DNow! добавляют?
Не знаю, вот честно не знаю. Я бы очень приветствовал такое нововведение.
Спасибо автору за замечательный текст. Прочитал с удовольствием.
Мне кажется что будет что-то среднее асинхронно-синхронное. Они друг друга будут дополнять.
Я, конечно же, читал этот пресс-релиз IBM — они пишет о графене, как о полупроводниковом материале для транзисторов. Это относится к классической электронике. А я пишу о применении графена в спинтронике, и их рассуждения о полупроводниковых недостатках графена не имеют никакого отношения к тому, о чём пишу я.
Вот интересно, а от разделения чисел на знаковые/беззнаковые, со всеми вытекающими, когда-нибудь откажутся?
Высокоровневые языки программирования могут запросто отказаться. Некоторые уже и отказались. А вот на уровне ассемблера такое разделение очень и очень удобно. Дело в том, что есть практическая необходимость работать с целыми числами произвольной длины, а алгоритмы для работы с такими числами реализуются значительно эффективнее, если у нас есть набор ассемблерных команд как для целых, так и для беззнаковых чисел. За деталями, опять же, советую обратиться к книжкам Дональда Кнута. Я на вскидку не помню, первый это том или второй, но где-то он детально описывает, как реализовывать BigInt-библиотеку наиболее эффективно.
В 64-битных системах практически нет смысла использовать беззнаковые числа именно как числа.
То есть в полностью 64-битных языках будут отдельно «целые числа» (знаковые) с арифметическими операциями, отдельно «действительные числа» (один тип, то что сейчас double), и отдельно, без возможности конверсии — типы данных «набор из 16/32/64 бит» с булевыми операциями. То есть кесарю кесарево, слесарю слесарево, а все попытки их смешать ошибочны по своей сути.
Ну может конверсию и оставят, но явно не автоматическую. Как сейчас есть Math.round() для конверсии из действительных в целые.
Ээ, да при чем тут числа с точкой/без? Я о unsigned/signed числах говорю, на уровне ассемблера. Все эти заморочки с флагами, дополнительные проверки, отдельные операции вроде mul/imul — все это последствия экономии памяти, которая сейчас не так актуальна. Вполне можно просто сделать все числа знаковыми, вопрос в том, как совершить такой переход.
отдельные операции вроде mul/imul — все это последствия экономии памяти, которая сейчас не так актуальна.
В том-то и дела, что не памяти, а времени. Нам нужно беззнаковое умножение, чтобы реализовать бысторое умножение BigInt'ов. В плане схемотехники это минимальный overhead, знаковые и беззнаковые операции сложения, вычитания и умножения выполняются одними и теми же операционными блоками, причём если мы откажемся от беззнакового варианта, мы выиграем всего 3-4% в количестве транзисторов в этих блоках. А выигрыш в скорости работы BigInt'ов за счёт существования этих операций — в некоторых случаях двукратное ускориение.
Утопичненько.
Спасибо за замечательный топик!
Вот только кажется мне, что С и x86 всё больше становятся гигантскими якорями. х86 — потому что легаси и современные процессоры крайне слабо похожи на 8086. С (и С++, как продолжатель традиций) — потому что не имеют средств для выражения того, что по-настоящему нужно, как то вывод типов (без BDSM в стиле хаскеля, скорее, что-то вроде ML), различные стратегии выделения памяти (линейные/стековые аллокаторы, например -возможность и необходимость их использования вытекает из семантики кода), паттерн матчинг (который выглядит на порядок красивее пачки ифов и может быть оптимизирован компилятором). Основная проблема, думается мне — гигантское количество человеколет, потраченных на оптимизацию компиляторов С и С++ под процессоры и процессоров под них. Ну и отсутствие вменяемой альтернативы прямо сейчас, да (хаскель слишком исследовательский, окамл слишком медленно развивается, млтон вообще тихо гниёт, да и все они не позволяют спуститься достаточно низко).
Подпишусь под каждым словом. Вместо Си, кстати, разработан язык аналогичной направленности, но лишённый сишных недостатков. Он называется С-- и разработан как своего рода универсальный ассемблер специально в качестве бекенда для компиляторов функциональных языков (GHC, если быть точным). Это прекрасный язык, я на нём писал и я его всячески рекоммендую.

Очень советую почитать его спецификацию и статьи по нему на сайте www.cminusminus.org/. Мои рассуждения на эту тему, правда ещё в несколько неоформленном виде, я записал на kuklev.com/blog/ctt/. Планировал со временем оформить это в полноценную статью и тоже поделиться. Я там пишу кроме прочего про Cyclone, использующий превосходную модель аллокации памяти.

Кстати, про вменяемую альтернативу С++. Есть Scala. Она не чисто функциональная, но умеючи на ней можно писать в чисто-функциональном стиле. Сейчас она работает под JVM, но в перспективе её можно и нужно транслировать, например, в тот же C--.
Scala тут не в тему, потому как слишком высокоуровневая (я не про JVM говорю сейчас, а про отсутствие каких-либо конструкций для работы напрямую с регистрами или указателями, например). Да и ML я скорее как пример привёл.
Cyclone интересен, но, насколько я знаю, немного подзаброшен. Голый вывод регионов тоже имеет свои недостатки. Впрочем, как и все модели работы с памятью. Наверное, нужны какие-то средства для выделения блоков переменных, работающих с разными моделями памяти, чтобы часть данных, например, выделялась динамически и собиралась сборщиком (например, частицы в системе частиц); часть — работала со стековым аллокатором (например, уровень в игре — он должен быть загружен при входе в ветку кода и выгружен после выхода); часть использовала подход со статическим выведением регионов (какое-нибудь IO, например), ну и так далее.
Про С-- почитал официальный сайт и не совсем понял, к чему он. Почитаю ещё ваш блог, посмотрю, спасибо.
Таки почитал ваш блог и вчитался в официальный сайт. Действительно, выглядит как С с некоторыми улучшениями, но всё-таки это не то. Это именно intermediate language, компилятор которого авторы не хотят делать сложным. А значит, никакого паттерн-матчинга, фвп с замыканиями и сложных оптимизаций. Это грустно.
И да, мы при этом ещё и абсолютно не трогаем вопросы многозадачности, добавляющий в этот и так сложнейший компот ещё огромную кучу проблем. Впрочем, возможно, эти вопросы стоит отдать на откуп более высоким уровням и писать на подобных языках только однопоточный код, полагаясь на share-nothing и message-passing между отдельными процессами внешним кодом (эрланговские С-ноды, если угодно).
НЛО прилетело и опубликовало эту надпись здесь
Электронная реализация симметрического переключателя затратна, потому я и написал выше «к сожалению, симметрические переключатели становятся привлекательными лишь при использовании спинтроники или фотонной логики. Электроника обречена использовать обычные транзисторы.»

Однако есть основания полагать, что в случае спинтроники их можно будет сделать очень компактными. Представте себе следующую картинку: есть две входящие дорожки, они смыкаются как буква V. Есть две выходящие дорожки, они расходятся как перевёрнутая буква V. Теперь представьте себе, что бы повернули одну из них относительно вертикальной оси на девяносто градусов. V осталась как была, а перевёрнутую её копию мы повернули боком, она выглядит как I. Если их сомкнуть через одну специальную хиральную молекулу, то можно достигнуть того, чтобы входящие потоки электронов этой молекулой поворачивались по часовой стрелки на девяносто градусов и выходили в выходящие дорожки так, что левая входящая выходит в левую выходящую, а правая входящая выходит в правую входящую. Если же взять левовращающий вариант той же хиральной молекулы, потоки будут поворачиваться в против часовой и соединение будет обратным: левая входящая в правую выходящую, правая входящая в левую выходящую. Так вот, выходит что существуют такие молекулы, киральность которых мы можем контролировать спином проходящего через них тока. Если удастся собрать такое устройство на практике, это будет одномолекулярный симметрический переключатель.

Информация у меня от одного из участников группы профессора Мюнценберга, они занимаются спинтроникой у нас в университете: www.uni-goettingen.de/de/202244.html.
Прямо как Эльбрус 2000.
Все классно и гладко, только вот рабочих образцов все никак не дождемся :(
Даже интересно: а вы ожидали увидеть эльбрус в МОБИЛЬНИЧКАХ и НОУТБУЧИКАХ?
Я ожидал услышать, что Бабаян наконец-то выпустил свой супер-процессор и он работает хоть в каком-нибудь НИИ.
А пока я вижу только как он пилит выделяемое государством бабло на высокотехнологичную утопию, называемую «Эльбрус 2000».
Интересно — за какие же такие заслуги он в Интел попал? Вы можете дать ссылку на публикации, показывающие его вклад в процессоры Intel?
Смешно. Анонимный тролль с отрицательной кармой и без единой статьи критикует членкора РАН, Intel Fellow. «Ай, Моська! знать она сильна, Что лает на Слона!»
www.intel.com/pressroom/kits/bios/bbabayan.htm
www.intel.com/pressroom/kits/bios/bbabayan_bkgd.htm
Можете что-нибудь подобное про себя показать?
Как любят «не тролли» бряцать даже не своими регалиями… Однако, даже тов. Сталину регалии не помогли — разоблачили культ личности…
Кстати, Барин, объясните смерду откуда у Вас такое самомнение о себе, что Вы можете позволить себе навешивать ярлыки?
Вот вы сейчас — отличный пример того, о чём говорил в этой речи А.А. Зализняк. Я позволю себе привести цитату:
Мне хотелось бы высказаться в защиту двух простейших идей, которые прежде считались очевидными и даже просто банальными, а теперь звучат очень немодно:

1) Истина существует, и целью науки является ее поиск.

2) В любом обсуждаемом вопросе профессионал (если он действительно профессионал, а не просто носитель казенных титулов) в нормальном случае более прав, чем дилетант.

Им противостоят положения, ныне гораздо более модные:

1) Истины не существует, существует лишь множество мнений (или, говоря языком постмодернизма, множество текстов).

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

Это поветрие — уже не чисто российское, оно ощущается и во всём западном мире. Но в России оно заметно усилено ситуацией постсоветского идеологического вакуума.

Источники этих ныне модных положений ясны:

действительно, существуют аспекты мироустройства, где истина скрыта и, быть может, недостижима;

действительно, бывают случаи, когда непрофессионал оказывается прав, а все профессионалы заблуждаются.

Капитальный сдвиг состоит в том, что эти ситуации воспринимаются не как редкие и исключительные, каковы они в действительности, а как всеобщие и обычные.

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

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

От признания того, что не существует истины в некоем глубоком философском вопросе, совершается переход к тому, что не существует истины ни в чём, скажем, в том, что в 1914 году началась Первая мировая война. И вот мы уже читаем, например, что никогда не было Ивана Грозного или что Батый — это Иван Калита. И что много страшнее, прискорбно большое количество людей принимает подобные новости охотно.

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

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

2) В любом обсуждаемом вопросе профессионал (если он действительно профессионал, а не просто носитель казенных титулов) в нормальном случае более прав, чем дилетант.

Вы читаете «профессионал… более прав, чем дилетант», а я читаю «если он действительно профессионал, а не просто носитель казенных титулов». Вы смотрите на титулы и принимаете на веру все, что Вам доносит «профессионал», а я задаю себе вопрос: а кто это — профессионал или титулы?
Угу. Вот только вот эту вот www.intel.com/pressroom/kits/bios/bbabayan_bkgd.htm ссылку вы, видимо, не видели, точно так же как не задавали себе вопрос «а кто такой Виктор Картунов ака matik», принимая его слова на веру. В результате получается, что я больше доверяю человеку с кучей титулов (у вас, кстати, есть знакомые членкоры РАН? Поспрашивайте у них, легко ли получить подобный «казённый титул». Если же у вас таких знакомых нет, то это само по себе показательно), а вы — неизвестной Моське из Интернета. Интересно, да?
Уважаемый, «не Моська» — не хамите.
Вы бы хотя бы удосужились ту же вики почитать, что ли.
>По обещаниям разработчиков, в 2008 году должна была начаться поставка вычислительных комплексов на базе Эльбруса-3M для нужд ПВО и ПРО
Более новую информацию я не нашёл, однако вот этот список публикаций как бы намекает нам, что работа идёт очень активно и используется всё это у военных (например, публикация «Радиационная стойкость микропроцессора семейства „МЦСТ-4R“ явно не относится к рынку потребительской электроники).
И это не говоря уже о том, что Бабаян работает в интеле и далеко не простым исследователем. Вы же вместо того чтобы разобраться просто начали поливать фекалиями известного и уважаемого человека. Это что, помогает самоутвердиться?
Статейка, кстати, на удивление мерзотная, полная передёргиваний и хамства. Ну да ладно, сейчас это модно стало. Тем не менее:
>Вместо «чемпиона-Е2К» частотой 1.2ГГц (о как!) с кэшем третьего уровня решили выпустить упрощенную модель Эльбрус-3М. Он отличался тем, что, «имея передовую архитектуру Е2К», не имел кэша третьего уровня и работать должен был на частоте 300МГц.
Напомню, что работают эти чипы в системах ПВО. Данные там очень своеобразные, как и требования. Высокие частоты и мелкие техпроцессы — откровенно вредны, поскольку первое означает повышенное тепловыделение и требовательность к точности тактования, а второе — неустойчивость к радиации. Поэтому грубые, медленные, но эффективные (см. VLIW) процессоры там очень в тему, не вижу причин хоть в чём-то обвинять Бабаяна и его архитектуру (тем более что, я думаю, интелу виднее, чем вам, дурак Бабаян и распильщик или нет), даже если в итоге налажен выпуск более простых процессоров, чем планировалось изначально. Вы же опять всё меряете с позиции «а у меня в айфончике мегагерц больше», не желая задумываться.
Вот я обыватель — к процессорам не имею отношения. Я знаю только то, что это «круто». И я много слышу от президента Медведева про коррупцию в гос. аппарате.
И есть 2 статьи про E2K и Бабаяна:
www.fcenter.ru/online.shtml?articles/hardware/processors/15730
ru.wikipedia.org/wiki/Эльбрус_2000
Какой статье я поверю?
Я вижу, что никакого нетбука или смартфона на нашенском процессоре не выпускается, ВВП по телеку не нажимает кнопку «ПУСК» нашей Супер-ЭВМ.
Поэтому я знаю, что E2K не существует в реальном мире. И я очень разочарован тем, что этот проект так загнулся. Я очень хотел гордиться за свою высокотехнологичную страну, а получается, что нужно валить отсюда :( А кто виноват в крахе моих надежд?
>Вот я обыватель — к процессорам не имею отношения.
Спасибо, я заметил.
>Какой статье я поверю?
Никакой. У вас нет своей головы? Вы не умеете пользоваться гуглом? Вики это исключительно удобная начальная точка, из которой можно начинать ходить по ссылкам. Посмотрите на список публикаций МЦСТ за один только последний год, посмотрите на достижения лично Бабаяна (список выше), сравните это с очень эмоциональным, но весьма безграмотным высером неизвестного анонима (я понимаю ещё, если бы это была обоснованная критика известного аналитика или учёного) на фцентре и подумайте сами, что больше свидетельствует о реальной работе.
>Я вижу, что никакого нетбука или смартфона на нашенском процессоре не выпускается
>Поэтому я знаю, что E2K не существует в реальном мире.
Т.е. всё, что выходит за рамки потребительского сектора, не существует, я правильно понял? Телескоп Хаббла он как — существует? Хотя да, с него же ПРИКОЛЬНЫЕ КАРТИНАЧКИ показывают. А вот какой-нибудь Чандра дял вас уже не существует, видимо.
>я очень разочарован тем, что этот проект так загнулся
>получается, что нужно валить отсюда :(
Да кто вам сказал? Кому вы верите — неизвестному с фцентра? Т.е. слов абсолютно неизвестного вам человека достаточно, чтобы принять решение о том, что «нужно валить отсюда»? Пиндык какой-то. В России сейчас есть куча исследований, если вам интересно, вам ничто не мешает ими интересоваться или даже участвовать в них. Но проще просто поливать помоями в интернете, правда?
Вы уже про помои 2 раза сказали.
Отвечу — не надо давать повода. Раз Бабаян устроил рекламу начала своего проекта, так он должен был устроить не меньшую рекламу окончания своего проекта. Иначе его дело осталось не доделанным в мозгах обывателей. И пожалуйста относитесь к обывателям с бОльшим уважением — именно они платят налоги (олигархи «оптимизируют» налоги).
Я отношусь с уважением к людям, которые используют свой мозг, а не ставят вопрос как «а кому бы мне поверить, А или Б».
Пиар исследований и проектов — да, согласен, большая проблема в России сейчас. Ничто не мешает вам исправить это, могу подсказать пару мест, куда можно придти, взять интервью, поделать фотографии и потом всё это опубликовать, например, на Хабре.
параллелизации
Спасибо, исправил. Если ещё что заметите, незамедлительно сообщайте!
остановка или, наоборот, разгон огромного количества электронов в проводнике

1) скорость электронов в проводнике очень низкая
2) кол-во электронов особой роли не играет, т.к. это квантовый эффект и все электроны начинают двигаться почти одновременно (ограничиваясь только скоростью света), т.е. не совсем ясно в чем выигрыш у «постоянного потока электронов».
скорость электронов в проводнике очень низкая
Дело не в том, какая там скорость. Дело в том, что когда заряды начинают двигаться ускоренно (ускоряются или замедляются), они начинают излучать. Суммарный эффект этого являения выражается в т.н. индуктивных и ёмкостных потерях. См. //ru.wikipedia.org/Реактивное сопротивление. Эти потери составляют > 95% энергопотребления современных процессоров. Остальные < 5% это обычные омические потери W = U²/R. На процессоре, в котором течёт только постоянный ток, а информацию несёт поляризация тока, остаются только ти потеи. В графене, где подвижность электронов огромна, напряжение это может быть очень мало, а соответственно очень низким может быть энергопотребление.

кол-во электронов особой роли не играет
Я вас не понял. Количество электронов, которые разгоняются и останавливаются, зависит от свойств проводника, это в точности те электроны, которые пребывают в зоне проводимости. Их количество безусловно играет роль в потерях. Потери в точности пропорциональны их количеству по формуле Друде.

это квантовый эффект и все электроны начинают двигаться почти одновременно
Так-так-так. Что они начинают двигаться почти одновременно с точностью до скорости света — это действительно так и вытекает из классической электродинамики. Где именно тут квантовый эффект? Мне в самом деле интересно, потому что квантовая теория поля — область моей профессиональной деятельности. :-)
Возможно я что-то путаю из университетского курса, но сам эффект «одновременного» движения электронов, т.е. передачи сигнала с максимальной скоростью, и есть квантовый эффект. Или я действительно путаю?

А за разъяснение о потерях спасибо, так яснее преимущества «графеновой схемы».
сам эффект «одновременного» движения электронов, т.е. передачи сигнала с максимальной скоростью, и есть квантовый эффект. Или я действительно путаю?

Скорее всего путаете. Смотрите, электроны это такие точечные заряды q = e. Электрическое поле действует на них с силой F = qE. Это самое поле это градиент потенциала. Если на проводник не подано напряжения, то разность потенциалов у его концов ноль, градиент потенциала всюду нулевой, на электроны не действует сила поля.

Теперь возьмём батарейку и замкнём один её контакт на заземление. Что такое батарейка? Это насос, который качает электроны. Батарейка создаёт разность потенциалов в пять вольт, значит на заземлённом контакте остался потенциал ноль, а на втором возник потенциал в плюс или минус пять вольт, в зависимости от того какой контакт мы заземлили. Удобнее заземлить положительный. Тогда получится, что батарейка накачала из земли в отрицательный контакт определённый излишек электронов.
Если провести аналогию с водным насосом, то батарейка на пять вольт это насос, который может создать разницу столба воды в пять метров. Один шланг насоса мы поместили в колодец (заземление), другой в вертикальный резервуар (выходная клемма батарейки). В ней собралось пять метров воды в высоту, насос работает, но уровень выше не поднимается.

Теперь возьмём и соединим с этими контактами наш проводник. С того конца, где ноль, ничего не изменилось. А вот как только мы соединим отрицательный контакт с проводником, по проводнику (от тамошнего излишка электронов) начнёт распространятся электрическое поле, отгоняющее электроны в проводнике подальше от излишка электронов на выходной клемме батарейки. Поле распространяется со скоростью света. Соответственно, как только до электрона в проводнике дойдёт «волна» изменения электромагнитного поля, он начнёт двигаться.
Второй абзац в Заключении — это 1 в 1 описание GPGPU и Larrabee?
Вы про какой абзац? Про этот:
При переходе к асинхронной схемотехнике будет оправдано использование нескольких десятков управляющих блоков и нескольких сотен операционных блоков. Такой переход вместе с соответствующим увеличением числа блоков обеспечит увеличение пиковой производительности более чем на два порядка и средней производительности более чем на порядок.
Если так, то где же тут описание Larrabee? Larrabee это конкретная архитектура с весьма специфическими свойствами, навроде кешекогерентности, совершенно определённого подхода к организации конвейера и т.д. У меня об этом ничего н сказано (какое может быть один в один описание?), а написаны общие вещи про большое число операционных ядер и блоков. Larrabee далеко не единственная и далеко не первая разработка, направленных в эту сторону. Кроме того, в этом абзаце упомянута асинхронность, которой Larrabee ну никак не планирует обладать.

А про GPGPU в духе CUDA и OpenCL у меня написано отдельно. Впрочем я по GPGPU совсем не эксперт, я пользуюсь университетскими Nvidia Tesla только через Matlab для отдельных численных расчётов, а непосредственно на CUDA пока ничего серьёзного не писал.
у GPU сотни и тысячи независимых вычислительных блоков, так что речь про них.
Интересный такой у вас факториал. Одно название от оного :)
Ой! Поправил. Удивительно, что вы первый заметили. Фантастика. Это проглядел не только я сам и несколько друзей, которых я просил просмотреть статью перед публикацией, но и ещё несколько сотен людей…
Но рекурсия теперь не хвостовая получается же.
Ну я и тормоз, однако. А хвостовой факториал работает неочевидным образом. Напишу туда алгоритм Эвклида, что ли.
Теперь всё ОК? У меня нынче тяжелый день и поздний час, мог ещё чего-нибудь напортачить. :(
Да, теперь хорошо.
Ой, не, теперь туплю уже я. Опять не ок, вызов не хвостовой. Хвостовой это если:
def func():

func()
Может быть стоит показать хвостовую реализацию какого-нибудь цикла, или что-то вроде того. Например:
func(n):
if n > 0:
print n
func(n — 1)
Парсер, скотина, пробелы пожрал:
def func():
&nbsp&nbsp …
&nbsp&nbsp func()
и
func(n):
&nbsp&nbsp if n > 0:
&nbsp&nbsp&nbsp&nbsp print n
&nbsp&nbsp&nbsp&nbsp func(n - 1)
Хвостовой он там в gcd. Реализуется goto, значит хвостовой. А он реализуется.
Ааа. Теперь я уже дважды туплю. Всё ок, вызов хвостовой. Что-то у меня всё перемешалось, извините.
Да просто два часа ночи. Спать надо. :-)
Кстати, с предшественником упомянутого асинхронного процессора GA144 (144-ядерный форт-процессор производства GreenArrays) — 40-ядерным вариантом — отечественные программеры успели плотно поработать (американцы нанимали наших форт-программистов для разработки базового софта), интересная штука.
хабр торт!
спасибо автору за статью.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.