LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

похоже, ещё как зависит.

например, на питоне/пхп нельзя сделать целые классы ошибок которые можно на си: сегфолт, переполнение стека.. да вагон их на самом деле.

можно сделать целкую кучу, но эта куча заведомо меньше чем та которую можн сделать на си. Но есть потеря в скорости. Правда если брать php (про питон не скажу, много на нём не писал), то там можно делать некоторые удивительные ошибки, которые нельзя сделать в си, например new MyGlass() вполне может спокойно быть в коде пока в эту ветку не зайдёт юзер и не выяснияснится что никакого MyGlass в природе не существует. Но статически типизированные языки этой проблемы не имеют.



Статически типизированные языки с управлением памятью типа явы убирают ещё целый класс ошибок. плата за то - скорость, память, многословность, разработка сложной явамашины и компилятора.

языки типа хаскеля/окалма убирают ещё больший класс ошибок, правда требуют лучшей подготовки от программиста , ну и рантайм/компилятор

языки вроде agda/idris позволяют делать совсем интересные вещи. например, если описать типы вот так, то на этапе компиляции компилятор сможет доказать что в программе нигде не вызывается bind к неоткрытому сокету и т.п. (т.е. что все вызовы функций типа bind, open, close гарантировано не вызовут ошибку потому что вызваны к сокету в неверном состоянии, без рантайм оверхеда!) но эти языки ещё более требовательны к программисту. и понятное дело имеют компилятор который умеет доказывать (т.е. требует немало труда сам по себе)

Исходная версия AndreyKl, :

похоже, ещё как зависит.

например, на питоне/пхп нельзя сделать целые классы ошибок которые можно на си: сегфолт, переполнение стека.. да вагон их на самом деле.

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

Статически типизированные языки с управлением памятью типа явы убирают ещё целый класс ошибок. плата за то - многословность и скорость, память, разработка сложной явамашины и компилятора.

языки типа хаскеля/окалма убирают ещё больший класс ошибок, правда требуют лучшей подготовки от программиста , ну и рантайм/компилятор

языки вроде agda/idris позволяют делать совсем интересные вещи. например, если описать типы вот так, то на этапе компиляции компилятор сможет доказать что в программе нигде не вызывается bind к неоткрытому сокету и т.п. (т.е. что все вызовы функций типа bind, open, close гарантировано не вызовут ошибку потому что вызваны к сокету в неверном состоянии, без рантайм оверхеда!) но эти языки ещё более требовательны к программисту. и понятное дело имеют компилятор который умеет доказывать (т.е. требует немало труда сам по себе)