и что самое главное -- нет ли в нем шагов назад? это приведет к крайне неприятной -- а скорее даже недопустимой -- ситуации, когда привычное по старому языку средство не сработает (в то время, как я рассчитывал на него!)
"шаг вперед" обычно понимается в контексте удобства решения конкретной задачи; но для тех, у кого круг решаемых задач достаточно широк (а не ограничен, например, клепанием на конвеере гуев с минимальной логикой), гораздо большую значимость приобретает "неопределенный" контекст; средства работы в этом контексте, скорее всего, в язык программирования не включены -- поэтому интерес представляет расширяемость языка
расширяемость языка нужна так же для тех случаев, когда я написал некоторый код, и хочу, чтобы этот код использовался в максимальной общности (т.е. мне не нужно было переписывать этот код под конкретный частный случай только из-за того, что компилятор языка ограничен в своем понимании); при этом, вполне возможно, мне придется расширить язык, что объяснить компилятору, как автоматически сгенерировать код под конкретный частный случай
пример: хаскель в смысле расширяемости не является существенным шагом вперед по сравнению с с++, т.к.:
1. если на с++ (скорее всего) не составит проблем написать шаблон для map, то в хаскеле:
This puts us in a situation where we really need two copies of every higher-order function, one pure and one monadic. This is even more of a problem when a library (like Data.Map) exports pure versions of some functions but not monadic ones. (http://disciple.ouroborus.net/wiki/Language/Overview/EffectSystem)
2. вместо указания целочисленных аргументов в параметрах шаблона (например, Z< 17 > в с++ может реализовывать кольцо вычетов по модулю 17) в хаскеле возникает необходимость использовать фантомных типов, и, насколько мне известно, написать такой код как
const int n=17; ... Z< n > x;даже с фантомными типами невозможно -- число 17 придется продублировать в форме фантомного типа
у себя в блоге вы можете сделать такое с помощью
ОтветитьУдалитьb {white-space: pre; font-weight:normal; font-family:monospace}
зайдя в Дизайн / Дизайнер шаблонов / Дополнительно / Добавить CSS
до окошка ввода комментов мне добраться пока не удалось
в комментариях можно постить код, при этом его надо обрамлять тегом < b >
ОтветитьУдалитьво всплывающем окошке предварительного просмотра он будет отображаться не совсем правильно, то есть целиком жирным шрифтом и со всеми строками, сдвинутыми в начало, т.е. примерно так:
int main(int argc, char** argv) {
return 0;
}
но после появления на этой странице он будет выглядеть правильно, т.е. так:
int main(int argc, char** argv) {
return 0;
}