Предыдущий пост Поделиться Следующий пост
Про угадываение по дефолту
lex_kravetski
Есть строчка на языке программирования, предположим, Java:

for ( _ ; _ < 100; _ ) {

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

Какая информация в заполненной строке — лишняя?

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

В VB 6.0 можно было примерно так и писать:

for i=1 to 100
...

Кому такое нравилось?

Как оказалось, многим. Поэтому, например, в Scala можно писать

for (i <- 1 to 100)

боюсь оказаться примитивным, но на мой взгляд, эта строчка больше показывает малую выразительность синтаксиса цикла for, и "предельную автоматизацию", есть смысл начинать именно с этого места ;)

Это ответ на вопрос про лишнюю информацию.

VisualAssist под VC студией вполне это реализует.
for - первый шоткат просто будет шаблон for, с заключением селекции в тело цикла.
forr - раширеный шоткат появляется список вариантов, затем поле для ввода имени переменной и верхнего индекса.

Шаблоны редактируются, можно сразу настроить на i например, или сделать 2-3 самых любимых типа
fori
forj

А вобще, for в нетрадиционном виде не так уж и часто используется. хотя есть конечно варианты.

К синтаксису же за многие годы привык, он разбирается чуть ли не рефлекторно:) И переход например на for i=1 to 100 для меня будет ну не то что напряжен, но как то дискомфортен.

Petzold 'does Visual studio rot the mind'?

Да-да-да-да, вот почему даже человек с таким мелким и мягким мозговым аппаратом, автор бесчисленного числа учебников по программированию на МС-платформе, ЧАрлз Петцолд, написал в своем блоге заметку, "вызывает ли Visual Studio загнивание мозга?"
http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html
.. где во второй части утверждает, что эти авто-дополнения навязывают определенный вид программирования (плюс шаблоны - фрагментарное мышление),
и заключает, что вот сам будет отдыхать, взяв какие-то микро-задачи и
программируя их с командной строки в обычном редакторе.

for ( _ ; _ < 100; _ ) {

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


i, разумеется. ;))

Какая информация в заполненной строке — лишняя?

Канонiчная форма в паскале, помницца:

for i:=1 to 100 do <оператор_тела_цикла>

Для других типов циклов есть while и do..until.

Подозреваю, что 1 ошибка автоматизатора будет приводить к затратам времени большим, чем рукопашное введение кода (которое делается в таких местах программы очень быстро - почти со скоростью печати на клавиатуре). Кстати, по моему опыту, чем больше человек любит автоподстановки и ассисты, тем больше дебильных и трудно отыскивающихся ошибок он делает.
Ещё, если часто приходится писать громоздкий итерационный цикл, то можно использовать макросы.

> Подозреваю, что 1 ошибка автоматизатора будет приводить к затратам
> времени большим, чем рукопашное введение кода (которое делается в
> таких местах программы очень быстро - почти со скоростью печати на
> клавиатуре).

То есть, непонятен ответ на вопрос «как быть»?

Всё лишнее кроме for и 100.

Тоже не понимал и не понимаю, почему разработчики нового часто напрочь игнорируют положительные примеры удачных реализаций.

Совершенно ацки бесит, когда в стратегии, например, Ctrl-{число} НЕ назначает группу юнитов, левая мышь НЕ обводит рамкой, а правая НЕ отдаёт приказ по умолчанию. В 99% случаев на то нет никаких рациональных соображений, а разрабы просто дебилы.

Аналогично бесит отсутствие в каждом языке конструкций

for 100 {делать что-то}

и

for i to 100 { делать что-то}

хотя в 80% этого бы хватало.

Ничего не надо вписывать

Меня в BDS-ке автоподстановка достала, т.к. текст пишешь полностью на автомате не теряя концентрации внимания, а когда IDE-ка применяет шаблон (даже если правильный) приходится нажимать кнопочки позиционирования <- -> на клавиатуре, что сбивает с мысли, весьма неприятно.

(Удалённый комментарий)
+1
Раз суть операции - перебор элементов некоего множества, нужно взять это множество и натравить на него итератор.

(Удалённый комментарий)

лично мне простота, в данном случае как минимум не очев

вотЪ

Переменная i! Двадцать лет на рынке счетчиков =)

int i
i
i++

Re: Переменная i! Двадцать лет на рынке счетчиков =)

Лет 30 наверное.
Если не все 40. ;))

простите, вы предлагаете заставлять IDE не только выводить подсказки, или предложения для вставки, но и пытаться "догадываться" и выдавать, список того, что "предположительно логично было бы вписать в данном случае"?

для этого ide, как минимум, должна:
1) уметь понимать, какие переменные доступны в данной области видимости (namespace у буржуев вроде зовется), в случае, если правила языка предписывают обязательное предварительное объявление всех переменных.
2) быть в курсе, что и для чего пишем, ну или как минимум - быть в курсе назначения всех доступных в данном блоке переменных, иначе можно сильно удивиться результату, если вовремя не заметить неверную подстановку.

по поводу лишней информации - зависит от языка. в перл можно и for(;;){ написать, с выходом по last if(что_то_там), например.


Re: Ответ на вашу запись...

> простите, вы предлагаете заставлять IDE не только выводить подсказки, или предложения для вставки, но и пытаться "догадываться" и выдавать, список того, что "предположительно логично было бы вписать в данном случае"?

Я бы это, конечно, предложил, но есть проблема: всё украдено уже до нас. Некоторые IDE уже это делают.

> для этого ide, как минимум, должна: 1) уметь понимать, какие переменные доступны в данной области видимости (namespace у буржуев вроде зовется), в случае, если правила языка предписывают обязательное предварительное объявление всех переменных. 2) быть в курсе, что и для чего пишем, ну или как минимум - быть в курсе назначения всех доступных в данном блоке переменных, иначе можно сильно удивиться результату, если вовремя не заметить неверную подстановку.

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

С наступающим Новым 2010 Годом!!!
Желаю вам и вашим родным и близким
Здоровья, Благополучия, Удачи!
Что ещё нужно для того чтобы год был
полон Счастья, по большому счету? :)

?

Log in

No account? Create an account