[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



>> Pike, например, язык динамический и безопастный, но в то же время
>> допускает типизированные переменные, и он не сегфолтится.
>> Вспоминаем логику и выражение "при прочих равных условиях".
>> Не надо сравнивать C и скриптовые языки.
>
> Вы заявляли выше, что строгая типизация обеспечивает надежность
> программ.
Любое высказывание подобного рода всегда предполагает "при прочих
равных". Нельзя сравнивать километры и килограммы.

> А теперь признаете, что ни хрена она не помогает и нетипизированный
> тикль надежнее типизированного С++.
Во-первых, я этого не говорил. Во-вторых, такое, конечно же, вполне
возможно, и теоретически и практически. В-третьих, я постоянно вижу
"падения" программ на руби с сообщениями типа undefined value...nil
траляля. Это лучше segfault-а только в том, что это безопасно в плане
vulnerabilities. В-четвертых, у моих знакомых есть ОЧЕНЬ отрицательный
опыт написания БОЛЬШОЙ программы на тикле (у меня такого опыта нет). Не
то, чтобы это аргумент, но success story я бы это не назвал.

> Оказывается, чтобы создавать надежные программы, нужны динамические
> языки, и неважно, типизированы они или нет.
Нет, не оказывается. Полно крупных надежных программ, написанных на
java, C#, Ada, и прочих, которые динамическими не являются.  Надежные
программы можно создать на любом языке, и на динамическом и на
статическом, вопрос только в цене.

>>
>> > Ничего, кроме скорости выполнения и упрощения
>> > компилятора/интерпретатора типизация переменных не дает.
>>
>> Наглое и подлое вранье! Разницу между compile-time и run-time проверками
>> знаем? А разницу в "цене" этих проверок?
>
> И что эта разница дает, кроме скорости выполнения кода и упрощения его 
> компиляции/интерпретации?
Из статической типизации не следует компилируемость языка, то есть
длительной _предварительной_ компиляции. И наоборот. Из
"компилируемости" языка не следует то, что он со статической
типизацией. Lua, например умеет компилироваться в исполняемый шитый код
(бинарь), но он динамический. Еще пример, для С, ЯП со статической
типизацией, существуют интерпретаторы.

> "Разница в цене" это и будет скорость выполнения кода,
Это не имеет никакого отношения к обсуждаемой теме.  Слово "компилятор"
само по себе не означает "быстрый".  Слово "интерпретатор" само по себе
не означает "медленный".  Точно так же динамическая типизация не всегда
в результате дает медленно исполняемый код. В некоторых случаях
транслятор вполне способен выяснить значение какого типа ожидается в
данной конкретной функции, и сгенерировать соответствующий код
максимально эффективно. Многие трансляторы Лиспа, например, так делают.

> и к надежности отношения не имеет.
Имеет. Динамические языки требуют на порядок большего количества тестов.
Это и есть "цена" динамичности. То, что многие опенсорсники их не пишут,
полагаяюсь исключительно на бетатестирование - это их проблемы.

> да еще и пишете, простите меня, безграмотно.
Да. Именно такими аргументами и отличается "срач", как тут было сказано,
от дискуссии.

-- 
Best regards, Aleksey Cheusov.


Reply to: