juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2008-05-14 12:56 pm

dynamic vs static

Я не собираюсь вступать в эту нонешнюю дискуссию. Просто хочу заметить, что речь идёт о "гарвардской архитектуре" супротив "архитектуры фон Неймана".

В первой данные отделены от кода, и задача программиста состоит в том, чтобы состыковать, хоть и через посредников, данные и код, который их обрабатывает; вот и приходится катать всякие конфигурации, эксэмэли, ентити бинзы; всё для того, чтобы уберечь код от данных. Тогда код можно статически проверить и отлить в бронзе. Чтоб не сломался.

Во второй что данные, что код, без разницы; код - это вид данных, а данные могут на определённом уровне интерпретироваться как код, или строить код, который эти данные сынтепретирует (как, помню, была какая-то база, которая строила классы для доступа прямо при открытии таблицы: взял таблицу - вот и классы загрузились; естественно, что динамически.

Ну а так, наверное, стоит почитать, конечно: Егге устраивает разгром в столице статической типизации
nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2008-05-14 11:46 pm (UTC)(link)
Messy? Ужос, ужос. После аккуратного, краткого питоновского кода на многократно более длинный и излишне детальный явский код мне смотреть напряжно.
(А приходится: сопрягаю то и другое.)

[identity profile] ivan-gandhi.livejournal.com 2008-05-14 11:55 pm (UTC)(link)
Кто б возражал. Я просто видел этот ужас. И сам, хм, одно время занимался переводами с питона на джаву. И видел как пишет Алекс Мартелли. Это стихи.

[identity profile] mikkim08.livejournal.com 2008-05-15 05:32 am (UTC)(link)
И видел как пишет Алекс Мартелли. Это стихи.

А например ? (люблю красивый код смотреть)

[identity profile] ivan-gandhi.livejournal.com 2008-05-15 06:26 pm (UTC)(link)

def allstrings(alphabet):
    yield ''
    for astring in allstrings(alphabet):
        for letter in alphabet:
            yield astring + letter 
nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2008-05-18 05:14 pm (UTC)(link)
чума! 8-)

[identity profile] glader.livejournal.com 2008-05-19 05:59 am (UTC)(link)
А где еще его красивости можно посмотреть?

[identity profile] ivan-gandhi.livejournal.com 2008-05-19 06:03 pm (UTC)(link)
В гугловской codebase?

[identity profile] glader.livejournal.com 2008-05-19 06:15 pm (UTC)(link)
Если ты про http://code.google.com/search/#q=Martelli , то там я ничего внятного не нашел. Будь добр, объясни чуть поподробнее, если не трудно.

[identity profile] ivan-gandhi.livejournal.com 2008-05-19 07:30 pm (UTC)(link)
:) Я имел в виду внутреннюю codebase...

[identity profile] anton-solovyev.livejournal.com 2008-05-15 12:01 am (UTC)(link)
Я думаю, это оттого, что к питоновскому коду требования ниже. Там тебе и глобальный лок внутри самого Питона, и все коллекции синхронизированы и всерьез эти программы (и библиотеки) никто за пределами коротких скриптов не проверял...
nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2008-05-15 12:27 am (UTC)(link)
Всерьёз не проверял? Настолько не проверял, что почему-то Google AppEngine из всех языков поддерживает именно питон? :)

Уверяю вас, питон используется гораздо шире и интенсивнее, чем может показаться.

[identity profile] anton-solovyev.livejournal.com 2008-05-15 12:43 am (UTC)(link)
В широте использования сомнений нет, на Питоне тут стоим.

Однако, например, при попытке всерьез использовать что-то типа xmlrpclib или SimpleXMLRPCServer оно начинает позорно трещать по швам.

Деталей не помню, но осадочек остался.
nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2008-05-18 05:16 pm (UTC)(link)
Да, не все библиотеки одинаково толковы :( Притом xmlrpc как-то особенно крива, но даже и urllib-ы всякие, без которых вроде бы никуда, местами не без косяков.

Это я почему-то счёл, что "всерьёз неикто не проверял" у вас про коллекции и прочие базовые вещи.

[identity profile] trurle.livejournal.com 2008-05-15 05:16 am (UTC)(link)
Аккуратность кода не измеряется в байтах.
nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2008-05-18 05:20 pm (UTC)(link)
Беда в другом: число строк, которые человек способен удержать в сознании, невелико, и потому число строк, которые можно написать / отладить за данное время, не сильно отличается от языка к языку (хотя, конечно, разные языки отличаются уровнем многословия: на java можно за час успеть написать 20 осмысленных строк, а на J — одну-две).

Потому чем компактнее язык упаковывает понятия, тем он больше (потенциально) увеличивает производительность разработки. Разумеется, при достаточно хорошем им владении (а про learning curve мы тут вроде и не начинали пока).

А вот и не жаль

[identity profile] trurle.livejournal.com 2008-05-18 05:29 pm (UTC)(link)
число строк, которые человек способен удержать в сознании, невелико, и потому число строк, которые можно написать / отладить за данное время, не сильно отличается от языка к языку (хотя, конечно, разные языки отличаются уровнем многословия: на java можно за час успеть написать 20 осмысленных строк, а на J — одну-две).
Это утверждение неверно. Ограничено число концепций и связей, которые человек может удержать в голове, многословность же или сжатость изложения этих концепций имеет совершенно второстепенное значение. Более того, подробное и однозначное изложение может быть преимуществом.
Потому чем компактнее язык упаковывает понятия, тем он больше (потенциально) увеличивает производительность разработки
Вам должен был понравиться APL в его силе и славе, со спецсимволами для операторов. Жаль только что не все программисты разделяют Ваши вкусы.
nine_k: A stream of colors expanding from brain (Default)

Re: А вот и не жаль

[personal profile] nine_k 2008-05-18 06:57 pm (UTC)(link)
О прямом наследнике APL я упомянул выше, под именем J :)

Связи возникают между всеми объектами, которые участвуют в исходном коде. Не все из них вызывают одинаковое умственное напряжение, но все вызывают ненулевое. Разумеется, над закорючками APL-образных языков приходится думать в среднем больше на едимницу длины кода. Но это, увы, не значит, что конструкции вида List<Pair<int, String>> lst = new ArrayList<Pair<int, String>>() проходят для мозга по той же цене, что lst = [].

Re: А вот и не жаль

[identity profile] trurle.livejournal.com 2008-05-18 07:41 pm (UTC)(link)
Но это, увы, не значит, что конструкции вида List
[Error: Irreparable invalid markup ('<pair<int,>') in entry. Owner must fix manually. Raw contents below.]

<i>Но это, увы, не значит, что конструкции вида List<Pair<int, String>> lst = new ArrayList<Pair<int, String>>() проходят для мозга по той же цене, что lst = [].</i>
Разумеется, не по той же. Понять что именно скрывается за конструкцией lst = [] гораздо сложнее чем List<Pair<int, String>> lst = new ArrayList<Pair<int, String>>().
Потому что lst = [] может обозначать тучу разных вещей, о природе которых надо задумываться глядя на эти криптическую запись.
nine_k: A stream of colors expanding from brain (Default)

Re: А вот и не жаль

[personal profile] nine_k 2008-05-18 08:39 pm (UTC)(link)
Задумываться надо и там, и там. Но о разном. Иногда выгоднее одно, иногда другое.
Мне мои задачи расчёта движения денег было проще писать на питоне, и на ошибки типизации я как-то вроде не нарывался. Самое распространённое было — NPE в личине "Object 'None' has no methos %s" или NameError-ы в плохо оттестированном коде.