в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10?
На странице "syntax across languages" нет ни одного ЯП с таким правилом.
Программировать сложно. Но не программировать еще сложнее.
Re: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Как бы вы отнеслись к конструкции DS>
DS>for i in 0..10
DS>
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10? DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
Плохо; асимметрию поведения на концах интервала стоит явно подчеркнуть.
Re: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Как бы вы отнеслись к конструкции DS>
DS>for i in 0..10
DS>
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10? DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
То ли страница слабовата, то ли идея поиска только в синтаксисе хромает. Потому что такой стиль систематически используется, например:
1. В Питоне:
* [x]range(0,10) — список от 0 до 9 включительно
* a[0:10] — если a — индексируемый объект, то его отрезок с 0 по 9-ю позицию включительно
поэтому, например, s == s[0:10] + s[10:20], и не надо всё время играться с плюс-минус единицей — арифметика позиций резко упрощается и получается меньше ошибок.
2. В C++ STL: x.begin() — итератор с указанием на первый элемент, а x.end() — на позицию за последним (хотя мне кажется, тут название неудачно: надо было назвать limit или stop, а не end), а в функциях, когда задаётся отрезок для работы — начальная позиция и предел, а не начальная и конечная. И опять-таки это исключает необходимость хода вперёд-назад по итераторам для указания другой части.
Кроме того, когда я писал библиотеку безопасной работы со строками на Си на фиксированных буферах (вместо стандартных кошмаров типа strncat), обнаружил, что лучше всего работать, используя два указателя: текущая позиция и предел. То есть, получая параметры — buf и bufsize, мы вычисляем limit = buf + bufsize и дальше всюду передаём его. Преимущество — резкое сокращение необходимости пересчёта длины по ходу обработки.
Суммируя всё сказанное, считаю, что подход, когда правая граница не включается — значительно более прогрессивен и полезен. С другой стороны, да, он менее привычен в бытовом плане. Ну так всё когда-то было впервые...
The God is real, unless declared integer.
Re[2]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, netch80, Вы писали:
N>поэтому, например, s == s[0:10] + s[10:20], и не надо всё время играться с плюс-минус единицей — арифметика позиций резко упрощается и получается меньше ошибок.
Только такую конструкцию естественнее обозначать s[0:10) + s[10:20); не надо всё время помнить, как в очередном новом языке ведет себя правая граница интервала
Re[3]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, deniok, Вы писали:
D>Только такую конструкцию естественнее обозначать s[0:10) + s[10:20); не надо всё время помнить, как в очередном новом языке ведет себя правая граница интервала
Зато надо помнить, как ведут себя правые скобки в каждом новом языке .
Программировать сложно. Но не программировать еще сложнее.
Re[2]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Зато надо помнить, как ведут себя правые скобки в каждом новом языке .
Синтаксис скобок запомнить проще, чем вспоминать надо ли сделать +1 или -1 . Ну и того, а почему только правые скобки рассматриваем? Например (0..10] тоже может означать от 1 по 10. И это вполне можно даже применять, более того, как раз тут скобками будет подчеркнуты неочевидные моменты синтаксиса, и в результате будет все гораздо приятней читаться.
Re[3]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Как бы вы отнеслись к конструкции DS>
DS>for i in 0..10
DS>
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10? DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
из конструкции не видно явно и однозначно диапазон итерации. Да сама идея специальный цикл для итерации по специфическому типу выглядит неуневерсально.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, deniok, Вы писали:
D>Здравствуйте, DSblizzard, Вы писали:
DS>>Здравствуйте, netch80, Вы писали:
DS>>Да, про range() я помнил, я имел в виду конкретно две точки.
D>Тогда так: D>
D>1..10 -- включая
D>1...10 -- не включая
D>
Плохо, слишком легко спутать.
Если вводить такое, то или систематически везде, как в Питоне, или с какими-то более выразительными знаками.
for i in 1 limit 10
The God is real, unless declared integer.
Re: Вопрос по приемлемости синтаксисической конструкции
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10? DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
Нормальная конструкция. Главное — задокументировать её.
Re[2]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, minorlogic, Вы писали:
M> Да сама идея специальный цикл для итерации по специфическому типу выглядит неуневерсально.
В Хаскелле (откуда эта нотация родом) она подходит для любого экземпляра класса типов Enum, и является синтаксическим сахаром для вызова функции enumFromTo :: a -> a -> [a]
Re: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Как бы вы отнеслись к конструкции DS>
DS>for i in 0..10
DS>
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10? DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
В Fantom'e 0..10 включает 10, а 0..<10 нет. Довольно удобно.
Re: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, DSblizzard, Вы писали:
DS>Как бы вы отнеслись к конструкции DS>
DS>for i in 0..10
DS>
в которой 0..10 означает от 0 (включительно) до 9 (включительно), а не от 0 до 10?
Отрицательно.
В прочем на этом форуме уже предлагали использовать для выражения подобных диапазонов разные скобки.
DS>На странице "syntax across languages" нет ни одного ЯП с таким правилом.
Это где?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Вопрос по приемлемости синтаксисической конструкции
Здравствуйте, komaz, Вы писали:
K>0..10 включает 10, а 0..<10 нет. Довольно удобно.
Супер! Теперь остается только выбрать обозначения для других диапазонов. Видимо, они должны быть такими:
0<..10 — от 1 до 10 10>..0 — от 9 до 0 10..>0 — от 10 до 1
Программировать сложно. Но не программировать еще сложнее.
Re[3]: Вопрос по приемлемости синтаксисической конструкции
С дефицитностью, которую упомянул deniok, еще можно смириться — две точки явно говорят о том, что это диапазон, а вот парность — это более серьезная проблема. Выше вероятность внесения ошибок, труднее их обнаруживать, различные трудности для редакторов текста/кода.
Программировать сложно. Но не программировать еще сложнее.