Re[31]: почему в вебе распространены именно динамические язы
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.10.10 15:02
Оценка:
Здравствуйте, WolfHound, Вы писали:

N>>1) естественные ограничения (например, законы сохранения)

N>>2) ограничения укладки в модель
N>>3) ограничения укладки на возможности компьютера
N>>и, во-первых, ты явно нечётко разделяешь (2) и (3).
WH>А это одно и тоже.
WH>Ибо нет смысла делать модель которую нельзя впихнуть в компьтер.

Нет. Потому что есть возможности компьютера, а есть _укладка_ на возможности компьютера. Чтобы чётче объяснить — компьютер может работать со сверхдлинными числами, но естественный размер — 16, 32, 64 бита.

WH>А номер 1 это вообще смех на палочке.

WH>Какие "естественные" ограничения у компилятора?

Например, то, что он не может выполнить бесконечный цикл при компиляции программы (напоминаю, что, например, язык шаблонов C++ тьюринг-полон).

WH> А у бугалтерской программы?


Правила схождения дебета с кредитом.

WH> А у веб сайта?...


Зависит от содержания сайта, но ряд общих правил работает и тут.

WH>Программ которые имеют дело с твоими "естественными" ограничениями ничтожно малое колличество.


Наоборот, таких очень много — почти все.

N>>Во-вторых, статическая типизация — это именно (3), в то время как человек, не зажатый явно в рамки применяемой системы типов, мыслит на уровне (1) и (2).

WH>1 не существует для почти 100% задач. 2-3 одно и тоже ибо не имеет смысла строить модель программы в отрыве от того где эта программа будет исполняться.

По сказанному выше это грубо неверно.

N>>Цена статики — та же, что её преимущество — чёткая определённость. Надо изменить возможности, особенно расширить — надо ломать интерфейс.

WH>Это не цена. Это всегда преимущество.
WH>Вот буквально вчера делал рефакторинг для дальнейшего расширения функциональности.
WH>Началось все с:
WH>
WH>     -         private _rule : Rule;
WH>     +         private _rule : option[Rule];
WH>

WH>И вот к чему привело http://code.google.com/p/nemerle/source/detail?r=9272
WH>После этих правок все скомпилировалось и заработало с первой попытки.
WH>В процессе ничего сломано небыло.
WH>Все места для правки показал компилятор.

WH>А теперь скажи мне как мне проделать тоже самое с динамической типизацией?


Не буду даже пытаться сказать, потому что не знаю Nemerle. Приведи plz пример на чём-то более общеупотребительном.

WH>Я просто не представляю как можно провести столько изменений без помощи роботов и ничего не сломать.


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

WH>Может программисты на динамически типизированных языках мега гении и могут держать в голове всю программу?


Зачем?

WH>Тогда не ясно почему вы до сих пор не захватили мир?


Ты ответь на предыдущий вопрос — почему ты считаешь, что "программистам на динамически типизированных языках" надо держать в голове всю программу.
Кстати, при чём тут захват мира? Я люблю некоторое количество умелой полемики, но не вижу смысла в сравнении с тем, что требует существенно других навыков.

N>>В Erlang я могу передать любые уточнения как элементы списка свойств (proplist), если функция в принципе принимает подобные уточнения.

WH>Ты блин не поверишь.
WH>Если функция принимает подобные уточнения то я тебе тоже самое и в статически типизированном языке на раз сделаю.

Не спорю, сделаешь. Но как ты сделаешь, например, правило, что в случае наличия параметра X не может быть задан параметр Y, если Y поступает только в переменной части? Отработка этой проверки при компиляции невозможна, потому что невозможно знать, кто и с чем вызовет. Вот у тебя и получается в результате проверка в рантайме, сиречь та самая динамика.

N>>Аналогично со всеми динамическими языками. В статике получаются монстры в стиле CreateFile(), которые тут же устаревают, не успев выпуститься (ты можешь указать в ней путь относительно каталога, заданного другим хэндлом, как в юниксовой openat()?)

WH>Не делай мне смешно.
WH>Это просто два разных подхода.
WH>Мелкософты сделали одну навороченную функцию. Линуксойды сделали кучу специализарованных.

А, так ты даже описания не прочитал? Ну и расскажи, как эта одна навороченная функция поможет сделать то, что я описал? Как говорят коллеги, иди учи матчасть.

WH>И лично я считаю что обе реализации говно.

WH>Ибо завязаны на глобальные переменные.
WH>Сам пойемешь где я их нашол или подсказать?
WH>Хотя это тема для отдельного флейма.

Вот именно, что отдельного.

N>>Но на верхних уровнях ситуация совсем другая — в завивисимости от лагеря, это или ASN.1 с двоичными кодеками (ISO),

WH>Ты опять делаешь мне смешно.
WH>Приводить ASN.1 в качестве защиты динамики...
WH>Нука раскажи что это такое если не описание типов:
WH>
WH>FooProtocol DEFINITIONS ::= BEGIN

WH>    FooQuestion ::= SEQUENCE {
WH>        trackingNumber INTEGER,
WH>        question       IA5String
WH>    }

WH>    FooAnswer ::= SEQUENCE {
WH>        questionNumber INTEGER,
WH>        answer         BOOLEAN
WH>    }

WH>END
WH>


Ну конечно, привёл пример фиксированной структуры и успокоился... Представь себе, что завтра выходит новая версия стандарта, где у этой sequence ещё три возможных компонента. И тут твой конвертер представлений резко сломался...

N>>Нет, он за ними не следит. Следит за тем, что ты ввёл в модель типов. Проекцию же на неё выполняешь ты, как программист. Тебе это позволяет получать нужный результат, например, в духе твоего примера — невалидный HTML на выходе невозможен. Но это ты сделал, и ты контролируешь, например, что используются _только_ твои типы. Если у тебя выходная функция будет конвертировать выдачу в текст и приписывать к нему "<a<<<baba<<<galamaga<<<<", как у тебя это отловится? Да никак, потому что ты где-то по любому должен был перевести в текст, и тут к тебе врывается реальный мир.

WH>Если какойто гоблин начал специально обходить защиту компилятора это он сам себе злобный буратино.
WH>Нормальный человек это делать не будет.
WH>Так что мимо.

Так в этом месте вообще защиты быть не может. Так что мимо

N>>Дааа? Ты зря так думаешь. В Go специально запретили такие вещи — более того, если у тебя int и int32 имеют одинаковую размерность, то всё равно нужна явная конверсия между ними.

WH>Про Go и его авторов у меня есть исключительно не цензурные соображения.

Ну и зря. Очень толковые ребята с неплохим результатом.
The God is real, unless declared integer.
Re[32]: почему в вебе распространены именно динамические язы
От: WolfHound  
Дата: 16.10.10 16:14
Оценка:
Здравствуйте, netch80, Вы писали:

N>Нет. Потому что есть возможности компьютера, а есть _укладка_ на возможности компьютера. Чтобы чётче объяснить — компьютер может работать со сверхдлинными числами, но естественный размер — 16, 32, 64 бита.

И че? Мне оно до лампочки. Если мне нужны длянные числа у меня будут длинные числа.

N>Например, то, что он не может выполнить бесконечный цикл при компиляции программы (напоминаю, что, например, язык шаблонов C++ тьюринг-полон).

И что ты этим сказать то хотел?

WH>> А у бугалтерской программы?

N>Правила схождения дебета с кредитом.
И где они в природе?
Это модель придуманая человеком для ведения учета.

WH>> А у веб сайта?...

N>Зависит от содержания сайта, но ряд общих правил работает и тут.
Каких?
Только давай таких чтобы из природы.
Или бесконечный цикл и выжирание памяти все что можешь придумать?

WH>>А теперь скажи мне как мне проделать тоже самое с динамической типизацией?

N>Не буду даже пытаться сказать, потому что не знаю Nemerle. Приведи plz пример на чём-то более общеупотребительном.
Там был изменен тип одной переменной.
Раньше значение было всегда.
А теперь стало опциональным.
Теперь везде где идет обращение к этой переменной нужно вставить проверки.
В случае со статикой мне все места где нужно проверить показал компилятор.
В случае с динамикой мне никто и ничего не раскажет.

N>Если изменения внутренние, их может отработать компиляция. Далее — тестирование. Не собираюсь говорить, что это 100% эквивалентный подход, но практически он оказывается достаточно сходным по результатам, чтобы можно было использовать и не страдать об этом.

Другими словами нужно сделать много больше работы с не гарантированным результатом.
Ну и где профит?

WH>>Может программисты на динамически типизированных языках мега гении и могут держать в голове всю программу?

N>Зачем?
Чтобы не забыть все поправить.

N>Ты ответь на предыдущий вопрос — почему ты считаешь, что "программистам на динамически типизированных языках" надо держать в голове всю программу.

А как иначе понимать что вообще происходит?
От компилятора то подсказки недождешся.

N>Не спорю, сделаешь. Но как ты сделаешь, например, правило, что в случае наличия параметра X не может быть задан параметр Y, если Y поступает только в переменной части? Отработка этой проверки при компиляции невозможна, потому что невозможно знать, кто и с чем вызовет. Вот у тебя и получается в результате проверка в рантайме, сиречь та самая динамика.

Зависимыми типами я тебе что угодно проверю.
Было бы жилание.
Впорос в том а нахрена эти сложности вообще нужны?
Можешь привести пример?

N>А, так ты даже описания не прочитал? Ну и расскажи, как эта одна навороченная функция поможет сделать то, что я описал? Как говорят коллеги, иди учи матчасть.

Что учить?
И причем тут вообще динамика?
А функциональность этой функции вообще за гранью моего понимания.
Она не нужна.

N>Ну конечно, привёл пример фиксированной структуры и успокоился... Представь себе, что завтра выходит новая версия стандарта, где у этой sequence ещё три возможных компонента. И тут твой конвертер представлений резко сломался...

Какой конвертер?
Каких представлений?

WH>>Если какойто гоблин начал специально обходить защиту компилятора это он сам себе злобный буратино.

WH>>Нормальный человек это делать не будет.
WH>>Так что мимо.
N>Так в этом месте вообще защиты быть не может. Так что мимо
Использование годных инструментов дебилами я обсуждать не намерен.
Ибо у дебила в любом случае получится говнокод.

N>Ну и зря. Очень толковые ребята с неплохим результатом.

Я уже ругался на эту тему
http://www.rsdn.ru/forum/philosophy/3598807.1.aspx
Автор: WolfHound
Дата: 11.11.09

И это не полный список.
Единственное что я не заметил при написании того сообщения это поддержку детерминированной финализации. В прочем она у них сделана столь дебильно что даже С++ и тот лучше.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[33]: почему в вебе распространены именно динамические язы
От: Mamut Швеция http://dmitriid.com
Дата: 16.10.10 22:56
Оценка:
WH>>> А у веб сайта?...
N>>Зависит от содержания сайта, но ряд общих правил работает и тут.
WH>Каких?
WH>Только давай таких чтобы из природы.

одна комната много детей
Автор: Mamut
Дата: 15.10.08


Задача исключительно алгоритмической природы. Статика тут не поможет никак.


dmitriid.comGitHubLinkedIn
Re: почему в вебе распространены именно динамические языки?
От: DemAS http://demas.me
Дата: 17.10.10 06:25
Оценка:
Здравствуйте, rsdn2010, Вы писали:

R>почему в вебе распространены именно динамические языки программрования — PHP, Python, Ruby, Javascript?


Потому что в web-е распространен подход — 'quick and dirty', то есть, мы быстро выкатываем первую версию приложения, в которой скорее всего будут баги и в которой не будет 90% нужного функционала, ны мы оперативно допилим это после. Почему такой подход получил распространение именно в web тоже достаточно легко объяснимо — именно там мы можем легко и оперативно заменить приложение сразу для всех пользователей.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[34]: почему в вебе распространены именно динамические язы
От: WolfHound  
Дата: 17.10.10 08:47
Оценка: 45 (1)
Здравствуйте, Mamut, Вы писали:

M>одна комната много детей
Автор: Mamut
Дата: 15.10.08

M>Задача исключительно алгоритмической природы. Статика тут не поможет никак.
1)Ограничения не естественные, а придуманные человеком.
2)Как тут поможет динамика?
3)Я рамках PEG прасера для немерле я решил почти идентичную задачу.

В задаче не сказано но я имею наглость предположит:
Список отелей меняется редко.
Правила в отеле еще реже.
Таким образом список паттернов у нас весьма стабилен. Даже изменение этого списка раз в час (хотя реально это будет несколько раз в месяц) не будет проблемой для моего решения.

Первое что нужно понять это то что у нас нет ни взрослых ни детей.
А образцы имеют вид не
1 ADL + 1 CHLD 0-6 + 1 CHLD 12-13
2 ADL + 2 CHLD 12-13

а
0-6 12-13 14-999
12-13 12-13 14-999 14-999


Каждый образец связан с кортежем (отель, тип комнаты, цена)

Теперь каждый образец мы превращаем в конечный автомат при достижении конца которого он выдает список кортежей соответствующих этому образцу.
Теперь все автоматы объеданяем а один НДКА. После чего трансформируем это дело в ДКА.
Теперь генерируем код.
Примерно как тут
http://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser/LRPEGCC/Compiler/RuleCompiler.CompileRule.n
нужная секция идет после
| Fsm(fsm)               =>


Гоняться с этим решением ты озвереешь.
Ибо обогнать близкий к оптимальному машиннай код задачка не для слабонервных.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: почему в вебе распространены именно динамические язык
От: Lloyd Россия  
Дата: 17.10.10 18:14
Оценка:
Здравствуйте, DemAS, Вы писали:

R>>почему в вебе распространены именно динамические языки программрования — PHP, Python, Ruby, Javascript?


DAS> Потому что в web-е распространен подход — 'quick and dirty',


И что из этого является препятствием для использования статически-типизированных языков?
Re[3]: почему в вебе распространены именно динамические язык
От: DemAS http://demas.me
Дата: 18.10.10 05:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>И что из этого является препятствием для использования статически-типизированных языков?


Ты про Haskell что ли? Да никаких.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[35]: почему в вебе распространены именно динамические язы
От: Mamut Швеция http://dmitriid.com
Дата: 18.10.10 06:01
Оценка:
M>>одна комната много детей
Автор: Mamut
Дата: 15.10.08

M>>Задача исключительно алгоритмической природы. Статика тут не поможет никак.
WH>1)Ограничения не естественные, а придуманные человеком.

Что такое естественные ограничения? Для меня естественные — это именно придуманные человеком. Естественнее не бывает.

WH>2)Как тут поможет динамика?


А как тут поможет статика? Ты тут апологет того, что «статика — труъ и помогает всегда». Я показал пример задачи, которая должна решаться на веб-сайте, и где от того, какая типизация будет в языке, ни холодно ни жарко.

WH>3)Я рамках PEG прасера для немерле я решил почти идентичную задачу.


И?

WH> Решение задачи, автоматы и т.п. поскипано.


Ну и при чем тут статика? Или автоматы нельзя на динамике делать?

WH>Примерно как тут

WH>http://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser/LRPEGCC/Compiler/RuleCompiler.CompileRule.n
WH>нужная секция идет после
WH>
WH>| Fsm(fsm)               =>
WH>


WH>Гоняться с этим решением ты озвереешь.

WH>Ибо обогнать близкий к оптимальному машиннай код задачка не для слабонервных.

Опять начинается сферовакуум. В моем случае мне даром не надо что-либо обгонять, потому что узкое место в данном случае — попытка загнать результаты в базу данных или вообще любое хранилище. Вот и нахрена мне там непревзойденная скорость статики? Только чтобы потом пенисометрией на РСДН заниматься?


dmitriid.comGitHubLinkedIn
Re[26]: почему в вебе распространены именно динамические язы
От: Mamut Швеция http://dmitriid.com
Дата: 18.10.10 06:21
Оценка:
M>>Вот это — верх аргументации, ага.
WH>Ты бы почитал на что я отвечал.
WH>Одна из фраз вообще твоя. Я там просто несколько слов изменил для того чтобы продемонстрировать тебе ущербность твоей логики. Но похоже не помогло.

Там нет моих фраз.

M>>Никому не нужна сферовакуумная скорость в отрыве от задачи. Если динамически типизируемый Erlang дает мне обработать 5000 запросов в секунду при том, что у меня пиковая нагрузка 1000, то зачем мне нужен статически типизируемый C#, например?

WH>Это пока ты остаешься в рамках.
WH>Но шаг в сторону и превет.

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

WH>Если нужно что-то посчитать начинаются тормоза.


Угу. Вот ты рядом мне начал рассказывать про это сказки
Автор: WolfHound
Дата: 17.10.10
. Прикинь, тормоза у меня не в расчетах, а в сохранении этих расчетов.

WH>Скажем при помощи этого http://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser#peg-parser/CSharp

WH>Я могу парсить C#4 со скорость 2 мегабайта в секунду.
WH>Слабо повторить на ерланге?

Зачем? Но при желании, думаю можно приблизиться к этим цифрам. Другой вопрос — насколько часто это требуется.

M>>Ошибки на этапе компиляции — это очень малая часть всех ошиок, что встречаются в программировании. Даже здесь, в «философии программирвания» про это говорили, и не раз, со ссылками на исследования и т.п.

WH>Да мне плевать что кто-то что-то там писал.

Да тебе на все наплевать, кроме своих наркотиков

WH>http://www.impredicative.com/ur/

WH>Вот попробуй тестами гарантировать отсутствие перечисленных проблем.
WH>

WH>Not only do they not crash during particular page generations, but they also may not:
WH> * Suffer from any kinds of code-injection attacks

статика этого тоже не гарантирует

WH> * Return invalid HTML

статика этого тоже не гарантирует

WH> * Contain dead intra-application links

статика этого тоже не гарантирует

WH> * Have mismatches between HTML forms and the fields expected by their handlers

статика этого тоже не гарантирует

WH> * Include client-side code that makes incorrect assumptions about the "AJAX"-style services that the remote web server provides

статика этого тоже не гарантирует

WH> * Attempt invalid SQL queries

статика этого тоже не гарантирует

WH> * Use improper marshaling or unmarshaling in communication with SQL databases or between browsers and web servers

статика этого тоже не гарантирует



что ты хотел сказать-то?

M>>Процитирую

WH>Ты не забывай заголовки читать... а то смешно получается.
WH>

WH>Static Typing Where Possible, Dynamic Typing When Needed

WH>Если у тебя есть помойка со слабо структуированными данными то приходится как то выкручиваться.
WH>Но это очень редкий случай.

это самый распространенный на данный момент случай.

WH>Но и тут польза динамической типизации мягко говоря не очевидна.

WH>Ну во есть у тебя какая то байда в которой есть не поймешь что.
WH>И что дальше?
WH>Ну загрузил ты это все в объект.
WH>И что дальше?
WH>Обратишься к полю по имени? А если там ничего нет? Данные то у нас структуированы как попало.

case proplists:get_value(a, Object) of
    undefined ->
        {error, {undefined_value, a}}


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

WH>Что делать?

WH>Схлопывать ласты?
WH>Или проверять есть ли у объекта поле?
WH>И так на каждое поле. И каждый подобъект. И так до бесконечности.

если надо, проверим. если не надо, не проверим. в чем проблема-то?

WH>Теперь сравним со статикой:

WH>Описал тип.
WH>И макросом сгенерировал для этого типа читалку которая проверяет наличие всех нужных нам полей. Если поле опционально то Option никто не отменял.

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

о, например, в Lisp'е, раз ты о макросах завел речь.


WH>Итого:

WH>Статика:
WH>1)Проверка структуры декларативна.

что бы это ни значило

WH>2)Автокомплит, рефакторинг, навигация,...


и как это еу же JetBrains ухитряются то же для Питона делать, просто поражаюсь

WH>3)Компилятор находит все опечатки и несоответствия типов. Хрен что забудешь.


Очень малая часть ошибок.

WH>4)Скорость работы высокая.


Опять эта мифическая никому не нужная сферовакуумная скорость в отрыве от задачи.


WH>Динамика:

WH>1)Проверки структуры императивны и размазаны по всей программе.

Фиг его знает, что ты тут имеешь в виду.

WH>2)Поддержки IDE нет. Ибо структура объекта не извесна. И взять ее негде.


и как это еу же JetBrains ухитряются то же для Питона делать, просто поражаюсь

WH>3)Компилятор молчит.


Да ты что. Неужели.

WH>4)Тормоза.


Опять эта мифическая никому не нужная сферовакуумная скорость в отрыве от задачи.


WH>Где профит то?


Профит у людей, которые не думают о языках в терминах сферовакуумности того или иного языка.


M>>Нет. У меня есть опыт компании, разрабатывавшей Erlang, и использующей его в гигантском проекте. Оказалось, что преимуществ статическая типизация им не дает.

WH>У тебя есть демагогия: Аппеляция к толпе. Аппеляция к авторитету.
WH>Технических аргументов нет.

О да. Они есть у тебя. «Вот у меня есть сферовакуумный язык у него есть сферовакуумная скорость. А так, мои представления о динамических языках застыли на уровне конца 80-х годов»


dmitriid.comGitHubLinkedIn
Re[2]: почему в вебе распространены именно динамические язык
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.10.10 06:23
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>Здравствуйте, rsdn2010, Вы писали:


R>>почему в вебе распространены именно динамические языки программрования — PHP, Python, Ruby, Javascript?


DAS> Потому что в web-е распространен подход — 'quick and dirty', то есть, мы быстро выкатываем первую версию приложения, в которой скорее всего будут баги и в которой не будет 90% нужного функционала, ны мы оперативно допилим это после. Почему такой подход получил распространение именно в web тоже достаточно легко объяснимо — именно там мы можем легко и оперативно заменить приложение сразу для всех пользователей.


А что мешает делать тоже самое с java, c# и даже с++?
Re[3]: почему в вебе распространены именно динамические язык
От: DemAS http://demas.me
Дата: 18.10.10 06:25
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А что мешает делать тоже самое с java, c# и даже с++?


Тем, что 'quick' в c++ выходит у слишком 'dirty'. Хотя бы из-за неаккуратной работы с памятью.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[4]: почему в вебе распространены именно динамические язык
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.10.10 06:34
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>Здравствуйте, gandjustas, Вы писали:


G>>А что мешает делать тоже самое с java, c# и даже с++?


DAS> Тем, что 'quick' в c++ выходит у слишком 'dirty'. Хотя бы из-за неаккуратной работы с памятью.


Ок, отбросим C++. Остались java и .NET, чем они не угодили для quick-and-durty?
Re[26]: почему в вебе распространены именно динамические язы
От: Mamut Швеция http://dmitriid.com
Дата: 18.10.10 06:38
Оценка:
WH>Итого:
WH>Статика:
WH>1)Проверка структуры декларативна.
WH>2)Автокомплит, рефакторинг, навигация,...
WH>3)Компилятор находит все опечатки и несоответствия типов. Хрен что забудешь.
WH>4)Скорость работы высокая.

После того появляется Tim Bray с WideFinder Benchmark и говорит:

There is a wrinkle; I'm pretty sure some of the numbers will get out of 32-bit integer range.


И все, приплыли. Если кто пропустит эту фразу, вылетит в рантайме с Exception'ом, который Мегаумный Компилятор, Который Ловит Все Ошибки (TM) отловить, естественно не сможет. Хотя скорость, соглашусь, будет большая. Правда, всего на порядок больше, чем у динамики. И, возможно, на 2 порядка больше кода. Но зато скорость!!!!одинодинодинодин.


dmitriid.comGitHubLinkedIn
Re[5]: почему в вебе распространены именно динамические язык
От: DemAS http://demas.me
Дата: 18.10.10 06:40
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Ок, отбросим C++. Остались java и .NET, чем они не угодили для quick-and-durty?


Ну, все это всего лишь мое мнение, но:

  • У них больше порог вхождения, чем у динамических языков. В Java надо знать что такое класс, как минимум. В Net, если не ошибаюсь, тоже.
  • Они более многословны. Ну то есть, чтобы отдать одну строку барузеру в Java мне придется реализовать класс, в нем метод. При этом надо не забыть какие там области видимости указать и типы принимаемых и возвращаемых значений. Далее надо вспомнить, какие пакеты надо импортировать, чтобы реадизовать нужное. Естественно я не рассматриваю готовые фреймворки.

    В Ruby/Python/Perl это достигается в одну строку.
    ... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
  • Re[5]: почему в вебе распространены именно динамические язык
    От: Mamut Швеция http://dmitriid.com
    Дата: 18.10.10 06:40
    Оценка:
    G>>>А что мешает делать тоже самое с java, c# и даже с++?

    DAS>> Тем, что 'quick' в c++ выходит у слишком 'dirty'. Хотя бы из-за неаккуратной работы с памятью.


    G>Ок, отбросим C++. Остались java и .NET, чем они не угодили для quick-and-durty?


    Когда Веб взлетал, java проталкивалась на десктопы, а .NET только рождался. Сейчас и первый и второй в вебе представлены очень широко.


    dmitriid.comGitHubLinkedIn
    Re[6]: почему в вебе распространены именно динамические язык
    От: Воронков Василий Россия  
    Дата: 18.10.10 06:44
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS> В Ruby/Python/Perl это достигается в одну строку.


    По поводу Perl не знаю, но то, что Ruby и Python ниже порого вхождения, чем, скажем, у C#... Эта мысль мне кажется несколько сомнительной. Ну начнем хотя бы с того, что там вообще-то тоже надо знать, что такое "класс".
    Re[6]: почему в вебе распространены именно динамические язык
    От: gandjustas Россия http://blog.gandjustas.ru/
    Дата: 18.10.10 06:47
    Оценка:
    Здравствуйте, DemAS, Вы писали:

    DAS>Здравствуйте, gandjustas, Вы писали:


    G>>Ок, отбросим C++. Остались java и .NET, чем они не угодили для quick-and-durty?


    DAS> Ну, все это всего лишь мое мнение, но:


    DAS>
  • У них больше порог вхождения, чем у динамических языков. В Java надо знать что такое класс, как минимум. В Net, если не ошибаюсь, тоже.
    DAS>
  • Они более многословны. Ну то есть, чтобы отдать одну строку барузеру в Java мне придется реализовать класс, в нем метод. При этом надо не забыть какие там области видимости указать и типы принимаемых и возвращаемых значений. Далее надо вспомнить, какие пакеты надо импортировать, чтобы реадизовать нужное. Естественно я не рассматриваю готовые фреймворки.
    Выделенное доставило

    DAS> В Ruby/Python/Perl это достигается в одну строку.

    А без готовых фреймворков?
  • Re[6]: почему в вебе распространены именно динамические язык
    От: gandjustas Россия http://blog.gandjustas.ru/
    Дата: 18.10.10 06:48
    Оценка:
    Здравствуйте, Mamut, Вы писали:

    G>>>>А что мешает делать тоже самое с java, c# и даже с++?


    DAS>>> Тем, что 'quick' в c++ выходит у слишком 'dirty'. Хотя бы из-за неаккуратной работы с памятью.


    G>>Ок, отбросим C++. Остались java и .NET, чем они не угодили для quick-and-durty?


    M>Когда Веб взлетал, java проталкивалась на десктопы, а .NET только рождался. Сейчас и первый и второй в вебе представлены очень широко.

    Да я то знаю, вот убеждение что на динамических языках что-то там проще делается меня удивляет.
    Re[7]: почему в вебе распространены именно динамические язык
    От: DemAS http://demas.me
    Дата: 18.10.10 06:51
    Оценка:
    Здравствуйте, Воронков Василий, Вы писали:

    ВВ>По поводу Perl не знаю, но то, что Ruby и Python ниже порого вхождения, чем, скажем, у C#... Эта мысль мне кажется несколько сомнительной. Ну начнем хотя бы с того, что там вообще-то тоже надо знать, что такое "класс".


    Там полезно знать, что такое класс. Но можно писать и в функциональном стиле.

    print "Hello, world"
    ... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
    Re[7]: почему в вебе распространены именно динамические язык
    От: DemAS http://demas.me
    Дата: 18.10.10 06:54
    Оценка:
    Здравствуйте, gandjustas, Вы писали:

    G>Выделенное доставило


    А в чем проблема то, я же рассматриваю Ruby и Python тоже без фреймворков.
    Или ты предлагаешь Rails и Django подключить?

    G>А без готовых фреймворков?


    Да.

       print '<h1>Hello, world</h1>'
    ... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.