Pull to refresh
254
0
Костюков Владимир @spiff

Пользователь

Send message
Фиксируется при переходе. Есть два вида переходов — естественный — вызванный тем, что узелки на нити кончились, тогда переход осуществляется на следующую нить. Есть принудительный переход — вызываемый узелками переходов.
Честно говоря, не могу себе представить такую логику — возврат по вычислению какой-нибудь нити. Тут очень много неявных моментов появляется и подводных камней. Например — что делать с начальным значением — когда мы значение нити используем впервые и в самой нити. Или как понять когда надо остановиться когда очередной раз мы пытаемся рекурсивно вычислить значении нити (просто принять что call на нить вычисляет только ее одну не делая стандартного перехода на следующую нить — тоже думаю не выход).

Идея очень хорошая я тоже о ней сначала думал, но отверг из за подобных неясностей.
Данная нить при первом вызове (q=1) будет равна «1». Перехода же не будет, поэтому вычистился последний узелок — а он — единица. При втором — будет переход и значение нити поменяется на 0 (так как последний вычисленный узелок в нити перед переходом — $q, а он равен 0).
Это прекрасно. Еще вчера у Quipu был только один пользователь — я. Уже сегодня есть программист, который пишет на нем лучше автора :)

Вы написали факториал на третьей версии языка (сейчас четвертая). Вам удалось в той версии разглядеть рабочий язык, мне (видимо из за моей узколобости) — нет. Поэтому, сейчас я всерьез задумался — не вернуть ли версию 3.

BTW, вы забыли обработку входного нуля. Т.е. 0! = 1

n. a. b. c. q. f.  o.

>> $b 1& $q 1& $a  &1
=o ** -- =q $q <<  <<
   1& $n $b --
   -- -- >a >a
   $q $q
   ** **
   1& $n
   ++ ++


На самом деле, код без инициализирующих нитей сейчас прекрасно обрабатывается текущим интерпретатором.

У меня к вам еще просьба. Не могли бы вы подобным способом написать еще пару примеров «сумма чисел от 1 до 100» и «генерация последовательности Фибоначчи.»? Буду очень признателен за помощь. Эти примеры помогут мне утвердиться во мнении, что ":" нити не нужны.

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

А ваш пример я обязательно попробую написать.
Есть такой грешок :)

Но на самом деле я честно вижу мало аналогии с Brainfuck. Разве что одна — это тоже эзотерический язык.
"$a" — это вроде переменной с ленивой инициализацией. О рекурсии я думал. Это и был один из первых трех черновиков. Идея с ленивой инициализацией меня спасла :)
Решил сообщить для неравнодушных. Версия la4j-0.3.0 доступна для загрузки.

Новый официальный сайт: la4j.org
Relase notes: la4j.blogspot.com/2012/12/la4j-030-is-out.html
la4j @ GitHub: github.com/vkostyukov/la4j
С интересом прочитал пост. Всегда неравнодушен к любым начинаниям в области языков программирования. Поэтому привет из Академа вам, желаю удачи и всенародного призвания :)

Двусвязный список, все правильно. Сам всегда думал, что односвязный поэтому заглянул в сорцы.
LinkedList.java (author Josh Bloch)
    private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }
Не знаю как вам, а мне вполне себе удобно слушать музыку прямо в броузере. Но ваши мотивы по созданию своего велика (в хорошем смысле) я прекрасно понимаю. Сам, для того, чтобы качать треки из ВКонтакте на флешку в машину, написал простецкое Chrome расширение: github.com/vkostyukov/vchrome.
Вы меня конечно извините, но почему:
>> а с понедельника будет зачислен в штат компании Dropbox

Если,
>> ‏@gvanrossum Today's my last day at Google. In January I start a new job at Dropbox:

twitter.com/gvanrossum/status/277126763295944705
Думал правда будете писать код, считающий котят. В таком случае было бы действительно интересно посмотреть «А стоит ли овчинка выделки?». Не покроет ли все преимущество нативного кода оверхед от JNI?
Писал что-то подобное тут.
Еще нужны варианты

«Пользуюсь (и являюсь активным контрибьютором)»
«Пользуюсь (и иногда посылаю патчи)»
Если
// Получаем количество вхождений слова в текст
long count = word.getCount();

то почему
// Смотрим вес слова
double weight = text.getWordWeight(word);

а не
// Смотрим вес слова
double weight = word.getWeight();

Странный API, вот к чему я. Симметрии нет.
Ну какие уж тут шутки. Интелосвский компилятор уже двигается в этом направлении и умеет распознавать некоторые алгоритмы. Например — умножение матриц, которое он, при соответствующей опции может заменить на вызов в MKL. Получается пишешь глупый код, который работает медленно, а компилятор просто заменяет его на один вызов и все летает.
Причем, на сколько я понял, с погодой у нас дела обстоят одинаково. Одинаково плохо :)

Information

Rating
Does not participate
Location
San Francisco, California, США
Date of birth
Registered
Activity