Здравствуйте, VladD2, Вы писали:
VD>Мало чего дадут. Хотя узнать кто такое V8 было бы все же интересно. Предполагаю что С++ из VS 2008. А там хрен его знает.
V8 — это реализация ECMAScript в Хроме, которая джитится. Причем джитится она напрямую, насколько я знаю, без всякого промежуточного представления. Вот, кстати, тестик, тупой по самое не могу:
var list = [];
var size = 1000;
for (var i = 0; i < size; i++)
list[i] = size - i;
function BubbleSort(item)
{
for(var i = 0; i < item.length; i++)
{
for(var j = 0; j < item.length - i - 1; j++)
{
if(item[j + 1] < item[j])
{
var x = item[j];
item[j] = item[j + 1];
item[j + 1] = x;
}
}
}
};
BubbleSort(list);
JScript MSIE8 — 367
V8 — 22
Как видишь, разница некислая все же.
VD>"В среднем" — означает, что какие-то задачи просядет сильнее, какие-то меньше. VD>Что до Руби, то это пожалуй один из худших интерпретаторов среди популярных скриптов. JScript от МС не худший, но и далеко не лучший.
JScript они, кстати, допиливают потихоньку. Тот, что идет с 8-м осликом стал гораздо шустрее работать. В 7-м на том же тесте было порядка 600 мс.
VD>Кстати, я уже устал от того что каждый пытается впихать свою специфику. Не все пишут бизнес-приложения. И не все пишут игры.
. Ответ что Немерл является языком общего назначения и применим много для чего его не удовлетворил. Эмпирически он сразу же сделал вывод, что Немерл не применим для математики и для веба ("Математика мимо как я понял. Веб тоже"). Его уверенность была подкреплена одним из ответов
котором говорилось, что работа с матрицами в дотнете реализована не самым шустрым образом. И его не остановило даже то, что в этом же ответе было сказано, что она человек как раз этими самыми рассчетами на немреле и занимается, а работу с матрицами перекладывает на GPU (который по любому на таких задачах любой С++ и i7 порвет). Про веб аргумент было вообще потрясающий — "Немерли так же удобен как пхп?".
Про ПХП это смешно, оценил.
Re[25]: почему в вебе распространены именно динамические язы
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, WolfHound, Вы писали:
WH>>Назови хоть одно преимущество динамической типизации. WH>>Объем кода? По сравнению с жабой? Да. По сравнению с языком с выводом типов? Нет. G>Вообще говоря динамические языка дают уменьшение объема даже по сравнению с языками с выводом типов. G>Но это все нивелируется необходимостью писать тестовый код чтобы как-то гарантировать работоспособность.
"Необходимость писать тестовый код чтобы как-то гарантировать работоспособность" есть _везде_. В любом коде, даже самом типизированном и компилированном, тривиально сделать ошибку, которая может быть проверена только внешним тестом, задавая вход и проверяя выход. И чем больше код делает реальной работы, тем это важнее.
Я частично согласен с остальными аргументами против динамики, но именно данный аргумент просто некорректен.
The God is real, unless declared integer.
Re[24]: почему в вебе распространены именно динамические язы
Здравствуйте, WolfHound, Вы писали:
WH>Мои аргументы объективны. WH>1)Скорость исполнения у динамически типизированных языков ниже. WH>2)Динамически типизированные языки не ловят ошибки на этапе компиляции.
WH>Назови хоть одно преимущество динамической типизации. WH>Объем кода? По сравнению с жабой? Да. По сравнению с языком с выводом типов? Нет. WH>Метапрограммирование? Так оно прекрасно работает и в статически типизированных языках.
Конечно, если статически типизированному добавить рефлексию, оно заработает. Только вот не кажется ли благородному дону, что это лицемерие?) Если ты пользуешься только теми возможностями, которые обычно ассоциируются со статическими языками, то у тебя даже простейший duck typing не будет работать.
WH>Кодогенерация в рантайме? Опять никаких проблем.
"Никаких проблем", если ты фактически принесёшь с собой компилятор (может, ещё и с JIT). Во многих случаях это удовольствие сильно дороже, чем просто интерпретатор.
WH>И таки да. Вы все знаете о каком языке я говорю.
Неужели Algol 68? Ах да, он на дотнете не работает...
WH>Все что у тебя есть это "Миллион леммионгов не может ошибаться." Ага...
P.S. Мне вот интересно — сколько из прочитавших моё сообщение решит, за что я агитирую и почему?)
P.S[2]. А расскажите мне, каким образом в ASP.NET (я не перепутал название?) делается смена кода на ходу. Интересны именно механизмы и их ограничения.
The God is real, unless declared integer.
Re[26]: почему в вебе распространены именно динамические язы
Здравствуйте, netch80, Вы писали:
N>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, WolfHound, Вы писали:
WH>>>Назови хоть одно преимущество динамической типизации. WH>>>Объем кода? По сравнению с жабой? Да. По сравнению с языком с выводом типов? Нет. G>>Вообще говоря динамические языка дают уменьшение объема даже по сравнению с языками с выводом типов. G>>Но это все нивелируется необходимостью писать тестовый код чтобы как-то гарантировать работоспособность.
N>"Необходимость писать тестовый код чтобы как-то гарантировать работоспособность" есть _везде_. В любом коде, даже самом типизированном и компилированном, тривиально сделать ошибку, которая может быть проверена только внешним тестом, задавая вход и проверяя выход. И чем больше код делает реальной работы, тем это важнее.
Неправда. В статически типизированном языке очень много проверок выполняет компилятор, в динамически типизированном — нет.
N>Я частично согласен с остальными аргументами против динамики, но именно данный аргумент просто некорректен.
Счегобы?
Банальный пример:
f1(f2(f3())))
В статически типизированном языке компилятор проверит соответствие типов. Для динамического языка надо писать проверки типов в тестах.
Re[19]: почему в вебе распространены именно динамические язы
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Понятно. Только начали беседовать — уже религиозные лозунги. ВВ>У меня уже начинает складываться впечатление, что у всех немерлистов есть строгая и неоспоримая позиция по всем, так сказать, вопросам жизни и смерти. А несогласие с этой позицией воспринимается чуть ли не как личное оскорбление. Надеюсь, это не заразно.
Это очень заразно. jIMHO, основная проблема Nemerle в кривой базе (.NET). Кривой — потому что база, сделанная MS только под Windows с её спецификой и закреплённая в таком виде, не годится для массы народа потому что
* работают под Unix, MacOS, etc. (а адаптировать даже Mono — та ещё забота)
* религиозные соображения запрещают всё от MS
в результате это во много раз сокращает пользовательскую базу, особенно среди тех, кто мог бы внести теоретический вклад и массовое использование;(
А как следствие этого — команда Nemerle психологически уже ориентирована на оппозицию и агрессивное отстаивание своей позиции. VladD2 это показывает на 120%.
Может, допишу ещё комментарий на это сообщение, но надо бежать по делам
The God is real, unless declared integer.
Re[25]: почему в вебе распространены именно динамические язы
Здравствуйте, netch80, Вы писали:
N>Конечно, если статически типизированному добавить рефлексию, оно заработает. Только вот не кажется ли благородному дону, что это лицемерие?)
Почему лицемерие?
Я почти каждый день работаю на немерле.
И там все прекрасно работает.
Причем даже весьма сложные вещи http://habrahabr.ru/blogs/nemerle/104968/
LRPEGCC — Макрос
Nemerle.Peg — Рантайм
CSharp — Парсер C#4
Остальное можно не смотреть.
N>Если ты пользуешься только теми возможностями, которые обычно ассоциируются со статическими языками, то у тебя даже простейший duck typing не будет работать.
С++
В шаблонах работает статически типизируемый duck typing...
А вообще это зло. Ты видел сообщения об ошибках при компиляции шаблонов С++?
Только не надо про динамику. Ошибка есть ошибка. И в отличии от шаблонов С++ она имеет все шансы вылезти в продакшене, а не при компиляции.
Нужны явные контракты. Это решает много проблем.
N>"Никаких проблем", если ты фактически принесёшь с собой компилятор (может, ещё и с JIT).
Так нтерпритаторы и носят с собой всю эту инфраструктуру всегда.
N>Во многих случаях это удовольствие сильно дороже, чем просто интерпретатор.
Например.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[25]: почему в вебе распространены именно динамические язы
Здравствуйте, gandjustas, Вы писали:
G>Вообще говоря динамические языка дают уменьшение объема даже по сравнению с языками с выводом типов.
На единици процентов.
G>Но это все нивелируется необходимостью писать тестовый код чтобы как-то гарантировать работоспособность.
С большим таким запасом нивилируетя... А если учесть то что тесты ничего не герантируют...
Простой пример http://www.impredicative.com/ur/
А теперь обеспечь эти гарантии тестами
Можешь взять любой динамически типизируемый язык с любым фреймворком.
И еще про тормоза полученого решения не забудь.
А когда дело до рефкторинга доходит то вообще тушите свет.
Ну и нахрена оно надо?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[26]: почему в вебе распространены именно динамические язы
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, gandjustas, Вы писали:
G>>Вообще говоря динамические языка дают уменьшение объема даже по сравнению с языками с выводом типов. WH>На единици процентов.
G>>Но это все нивелируется необходимостью писать тестовый код чтобы как-то гарантировать работоспособность. WH>С большим таким запасом нивилируетя... А если учесть то что тесты ничего не герантируют... WH>Простой пример http://www.impredicative.com/ur/ WH>А теперь обеспечь эти гарантии тестами WH>Можешь взять любой динамически типизируемый язык с любым фреймворком.
WH>И еще про тормоза полученого решения не забудь.
WH>А когда дело до рефкторинга доходит то вообще тушите свет.
WH>Ну и нахрена оно надо?
Да я вот тоже не знаю.
С современными языками довольно сложно придумать адекватное применение динамики.
Re[20]: почему в вебе распространены именно динамические язы
Здравствуйте, netch80, Вы писали:
N>Это очень заразно. jIMHO, основная проблема Nemerle в кривой базе (.NET). Кривой — потому что база, сделанная MS только под Windows с её спецификой и закреплённая в таком виде, не годится для массы народа потому что
Nemerle2 будет сделан таким образом чтобы он мог комплироваться не только в .НЕТ
Нужно будет обязательно сделать поддержку LLVM.
Про JVM не уверен. Уж очень она кривая. Хотя если забить на некоторую потерю производительности можно и ее поддержать.
N>* работают под Unix, MacOS, etc. (а адаптировать даже Mono — та ещё забота)
Это религия. Моно работает.
N>* религиозные соображения запрещают всё от MS
Ну тут ты сам признаешь что это религия.
N>А как следствие этого — команда Nemerle психологически уже ориентирована на оппозицию и агрессивное отстаивание своей позиции. VladD2 это показывает на 120%.
Мозговед из тебя так себе.
Влада я знаю еще с тех времен когда немерлом и не пахло. Так вот намерле на его поведении не отразился.
Что касается меня то я просто перфекционист и питаю глубокое отвращения к фундаментально ущербным концепциям таким как динамическая типизация. А что касается немерле то для меня это не более чем подопытный кролик на котором я свои идеи обкатываю.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: почему в вебе распространены именно динамические язы
Здравствуйте, gandjustas, Вы писали:
G>С современными языками довольно сложно придумать адекватное применение динамики.
А его нет.
Единственное место где адекватно динамическое приведение типов это реализация плагинов.
Вот только вся динамика заключается в строке типа
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, gandjustas, Вы писали:
G>>С современными языками довольно сложно придумать адекватное применение динамики. WH>А его нет. WH>Единственное место где адекватно динамическое приведение типов это реализация плагинов. WH>Вот только вся динамика заключается в строке типа WH>
Я в динамике последний раз делал визитор на C#. Вызов dynamic обеспечивает диспетчеризацию в рантайме.
Но это скорее не динамика сама по себе, а стык динамики и статики.
Re[21]: почему в вебе распространены именно динамические язы
Здравствуйте, WolfHound, Вы писали:
N>>Это очень заразно. jIMHO, основная проблема Nemerle в кривой базе (.NET). Кривой — потому что база, сделанная MS только под Windows с её спецификой и закреплённая в таком виде, не годится для массы народа потому что WH>Nemerle2 будет сделан таким образом чтобы он мог комплироваться не только в .НЕТ WH>Нужно будет обязательно сделать поддержку LLVM.
О, вот тогда и начнём смотреть.
N>>* работают под Unix, MacOS, etc. (а адаптировать даже Mono — та ещё забота) WH>Это религия. Моно работает.
Это не религия. Попытка хоть как-то её заюзать нарвалась, например, на следующее:
1. Нельзя открыть один и тот же файл два раза, не воспользовавшись специальными флагами "разделять открытие".
2. Mono пытается вести собственный индекс файловых дескрипторов, отдельно от системных, причём не даёт достаточного API для прямой работы с ними.
Первое ещё можно было преодолеть массовыми патчами, но второе тут же отправило попытки работать с ним в морг. Вот что получается, если переносить виндовые средства на unix...
N>>* религиозные соображения запрещают всё от MS WH>Ну тут ты сам признаешь что это религия.
Да, но от этого не легче.
N>>А как следствие этого — команда Nemerle психологически уже ориентирована на оппозицию и агрессивное отстаивание своей позиции. VladD2 это показывает на 120%. WH>Мозговед из тебя так себе. WH>Влада я знаю еще с тех времен когда немерлом и не пахло. Так вот намерле на его поведении не отразился.
А подумай с другой стороны — если бы не его характер, он бы бросил Nemerle.
Да, это всё только догадки, но пока что не вижу опровержений.
WH>Что касается меня то я просто перфекционист и питаю глубокое отвращения к фундаментально ущербным концепциям таким как динамическая типизация. А что касается немерле то для меня это не более чем подопытный кролик на котором я свои идеи обкатываю.
В динамической типизации нет ничего фундаментально ущербного: это то, как думают _люди_. У нашего мышления не бывает статической типизации, она — не более чем оптимизация под свойства современных компьютеров.
The God is real, unless declared integer.
Re[27]: почему в вебе распространены именно динамические язы
Здравствуйте, gandjustas, Вы писали:
N>>"Необходимость писать тестовый код чтобы как-то гарантировать работоспособность" есть _везде_. В любом коде, даже самом типизированном и компилированном, тривиально сделать ошибку, которая может быть проверена только внешним тестом, задавая вход и проверяя выход. И чем больше код делает реальной работы, тем это важнее. G>Неправда. В статически типизированном языке очень много проверок выполняет компилятор, в динамически типизированном — нет.
Почему так сразу и "неправда"? Проверки, выполняемые компилятором, не защищают от алгоритмических ошибок. О чём я и говорю — что тесты всё равно нужны.
С другой стороны, есть достаточно мало ситуаций (по моему опыту), которые требуют специфических тестов именно для динамики: если тест прошёл — то код работает правильно, и все операции с типами выполнены правильно.
N>>Я частично согласен с остальными аргументами против динамики, но именно данный аргумент просто некорректен. G>Счегобы? G>Банальный пример:
G>
G>f1(f2(f3())))
G>
G>В статически типизированном языке компилятор проверит соответствие типов. Для динамического языка надо писать проверки типов в тестах.
Мнэээ... зачем проверять типы промежуточных данных? Это годится только для крайне малого объёма кода — т.е. для песочницы. Для реальных ситуаций надо проверять, что на входе и что на выходе, а это не отличается от факта тестирования в случае статической типизации.
The God is real, unless declared integer.
Re[26]: почему в вебе распространены именно динамические язы
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, netch80, Вы писали:
N>>Конечно, если статически типизированному добавить рефлексию, оно заработает. Только вот не кажется ли благородному дону, что это лицемерие?) WH>Почему лицемерие?
Потому что подменяет статически типизированный язык — мультиконцептуальным, где преобладает статическая типизация, но можно использовать и динамическую.
Любое место, где используешь динамическую типизацию, начинает хромать по тем же причинам, что и полностью динамическая типизация.
WH>Я почти каждый день работаю на немерле.
Не буду пытаться спорить с этой цифрой. Но к чему она?
WH>С++ WH>В шаблонах работает статически типизируемый duck typing...
Знаю, но не считаю это примером для данного случая.
WH>А вообще это зло. Ты видел сообщения об ошибках при компиляции шаблонов С++?
Видел. И радуюсь, что мне не нужно писать на C++.
WH>Только не надо про динамику. Ошибка есть ошибка. И в отличии от шаблонов С++ она имеет все шансы вылезти в продакшене, а не при компиляции. WH>Нужны явные контракты. Это решает много проблем.
Это речь про статику или динамику?
The God is real, unless declared integer.
Re[22]: почему в вебе распространены именно динамические язы
Здравствуйте, netch80, Вы писали: N>Это не религия. Попытка хоть как-то её заюзать нарвалась, например, на следующее: N>1. Нельзя открыть один и тот же файл два раза, не воспользовавшись специальными флагами "разделять открытие". N>2. Mono пытается вести собственный индекс файловых дескрипторов, отдельно от системных, причём не даёт достаточного API для прямой работы с ними. N>Первое ещё можно было преодолеть массовыми патчами,
Да, странная фича, но что она ломает? По идее, должен сломаться код, портированный из какой-то более юниксовой среды (почему-то мне в голову лезет мысль про перенос с питона на IronPython+Mono).
N>но второе тут же отправило попытки работать с ним в морг. Вот что получается, если переносить виндовые средства на unix...
А можно пример проблемы?
Re[23]: почему в вебе распространены именно динамические язы
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, netch80, Вы писали: N>>Это не религия. Попытка хоть как-то её заюзать нарвалась, например, на следующее: N>>1. Нельзя открыть один и тот же файл два раза, не воспользовавшись специальными флагами "разделять открытие". N>>2. Mono пытается вести собственный индекс файловых дескрипторов, отдельно от системных, причём не даёт достаточного API для прямой работы с ними. N>>Первое ещё можно было преодолеть массовыми патчами, MC>Да, странная фича, но что она ломает? По идее, должен сломаться код, портированный из какой-то более юниксовой среды (почему-то мне в голову лезет мысль про перенос с питона на IronPython+Mono).
Потому оно тебе в голову и лезет, что я рассказывал про этот случай в ответе тебе. И таки да, там был именно Питон.
N>>но второе тут же отправило попытки работать с ним в морг. Вот что получается, если переносить виндовые средства на unix... MC>А можно пример проблемы?
Так я ж описал, что ещё нужно?
The God is real, unless declared integer.
Re[24]: почему в вебе распространены именно динамические язы
M>>Нуну. От тебя, я вижу, «аргументы» еще более по существу. Тут еще надо внимательно приглядется, кто на наркотиках WH>Мои аргументы объективны.
Вах. Неужели.
Я не пытаюсь лечить динамику.
Эту ошибку природы личить не имеет смысла.
Людям, которые ловят кайф, важнее наркотики, а не мифические бенефиты от здорового образа жизни.
Вот это — верх аргументации, ага.
WH>1)Скорость исполнения у динамически типизированных языков ниже.
Никому не нужна сферовакуумная скорость в отрыве от задачи. Если динамически типизируемый Erlang дает мне обработать 5000 запросов в секунду при том, что у меня пиковая нагрузка 1000, то зачем мне нужен статически типизируемый C#, например?
WH>2)Динамически типизированные языки не ловят ошибки на этапе компиляции.
Ошибки на этапе компиляции — это очень малая часть всех ошиок, что встречаются в программировании. Даже здесь, в «философии программирвания» про это говорили, и не раз, со ссылками на исследования и т.п.
WH>Назови хоть одно преимущество динамической типизации. WH>Объем кода? По сравнению с жабой? Да. По сравнению с языком с выводом типов? Нет. WH>Метапрограммирование? Так оно прекрасно работает и в статически типизированных языках. WH>Кодогенерация в рантайме? Опять никаких проблем.
We are interesting in building data-intensive three-tiered en- terprise applications. Perhaps surprisingly, dynamism is probably more important for data intensive programming than for any other area where people traditionally position dynamic languages and scripting. Currently, the vast majority of digital data is not fully structured, a common rule of thumb is less then 5 percent. In many cases, the structure of data is only stat- ically known up to some point, for example, a comma separated file, a spreadsheet, an XML document, but lacks a schema that completely describes the instances that a program is working on. Even when the structure of data is statically known, people often generate queries dynamically based on runtime informa- tion, and thus the structure of the query results is statically unknown.
Hence it should be clear that there is a big need for languages and databases that can deal with (semi-structured) data in a much more dynamic way then we have today. In contrast to pure scripting languages and statically typed general purpose languages, data intensive applications need to deal seamlessly with several degrees of typedness.
WH>И таки да. Вы все знаете о каком языке я говорю.
Не имею ни малейшего представления. Ах, Немерле, наверное? Ну, когда Немерле станет хоть где-то когда-то использоваться, тогда и поговорим.
WH>Все что у тебя есть это "Миллион леммионгов не может ошибаться." Ага...
Нет. У меня есть опыт компании, разрабатывавшей Erlang, и использующей его в гигантском проекте. Оказалось, что преимуществ статическая типизация им не дает.
Здравствуйте, netch80, Вы писали: N>>>но второе тут же отправило попытки работать с ним в морг. Вот что получается, если переносить виндовые средства на unix... MC>>А можно пример проблемы? N>Так я ж описал, что ещё нужно?
А, про файловые дескрипторы — это применительно все к той же проблеме открытия файлов?
Re[25]: почему в вебе распространены именно динамические язы
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, netch80, Вы писали: N>>>>но второе тут же отправило попытки работать с ним в морг. Вот что получается, если переносить виндовые средства на unix... MC>>>А можно пример проблемы? N>>Так я ж описал, что ещё нужно? MC>А, про файловые дескрипторы — это применительно все к той же проблеме открытия файлов?
Нет, к запуску процессов из-под. Элементарные варианты запуска программ с перенаправлением потоков — не проходят.
Ещё были аналогичные проблемы с управлением сокетами — не всё можно сделать штатными средствами.
The God is real, unless declared integer.
Re[20]: почему в вебе распространены именно динамические язы
Здравствуйте, netch80, Вы писали:
N>Это очень заразно. jIMHO, основная проблема Nemerle в кривой базе (.NET). Кривой — потому что база, сделанная MS только под Windows с её спецификой и закреплённая в таком виде, не годится для массы народа потому что N>* работают под Unix, MacOS, etc. (а адаптировать даже Mono — та ещё забота) N>* религиозные соображения запрещают всё от MS N>в результате это во много раз сокращает пользовательскую базу, особенно среди тех, кто мог бы внести теоретический вклад и массовое использование;( N>А как следствие этого — команда Nemerle психологически уже ориентирована на оппозицию и агрессивное отстаивание своей позиции. VladD2 это показывает на 120%. N>Может, допишу ещё комментарий на это сообщение, но надо бежать по делам
Это не вы ли спрашивали, удобнее ли Немерле, чем ПХП?