Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Python: the famous tab stops

Vande omentaina, Tiflocomp!
Вопрос почти из чистого любопытства (пока всё равно времени особо
нет, но в будущем, возможно...):
попытался тут посмотреть на синтаксис языка Python, на котором сейчас
пишут много чего от NVDA до Web-приложений.
Что меня повергло в особый ужас, так это синтаксис блочных конструкций
типа if. В нормальных... хм... привычных языках вроде PHP, Perl,
JavaScript и просто JAVA такие конструкции задаются в общем виде так:
if (условие) {
блок кода
}
В PHP, в частности, допустим и другой синтаксис, который мне по
крайней мере видится бейсик-подобным:
if (условие):
блок кода
endif;

В Питоне такие вещи делаются tab stop'ами.
Вопрос: как незрячие программисты обходят это дело? Например, у меня 5
вложений if, в третьем из которых ещё цикл for, в котором тоже есть
какой-нибудь switch. Как не запутаться в том, сколько раз табать?
Спасибо!

Ответить   Anarendil Mon, 16 Mar 2009 22:58:11 +0200 (#833870)

 

Ответы:

Доброго времени суток, Anarendil.

Из сообщения от 16.03.2009 23:47:

Ну, во-первых, это скорее преимущество, поскольку нет лишних символов.
Меньше давление на уши.
Выставляется опция в редакторе типа "сохранять отступы".
Тогда при написании нового кода вообще думать не надо.
Tab в любых языках рекомендуется использовать так или иначе.

Ну, а во-вторых, стиль написания кода подталкивает к более функциональному
мышлению.
И такая глубина вложенности не является характерной. (imho)

С уважением, Руслан Усачев
RUsach***@t*****.by

Ответить   Руслан Усачев Tue, 17 Mar 2009 07:32:52 +0200 (#833942)

 

Vande omentaina, Руслан!

Я привёл пример того, с чем встречался в Web-программировании, где
нужны всяческие обработки уровней пользователя и реакций этого самого
пользователя на некоторые действия.
А что за опция "сохранять отступы" и в каких нетяжёлых редакторах она
присутствует? И если отступ сохраняется, то как потом вернуться на
уровень вверх?

Ответить   Anarendil Tue, 17 Mar 2009 18:02:40 +0200 (#834197)

 

Доброго времени суток, Anarendil.

Из сообщения от 17.03.2009 18:05:

Например AkelPad:
в меню Настройки->Сохранять отступы слева.
При переходе на новую строку сохраняется отступ предыдущей строки.
Увеличить уровень вложенности - еще один Tab.
Уменьшить - Del соответственно.
Для удобства и пока нет привычки,
можно комментировать смену уровня на отдельной строке.
Я плотно не использую Python,
но очень нетрудно добавить в скрипты для AkelPad
функциональность наподдобие того, как Jaws обрабатывает смену уровней в
"Деревьях".
Т. е. озвучивает уровень только при его изменении.
Опция "Озвучивать отступы" не очень удобна (imho).

С уважением, Руслан Усачев
RUsach***@t*****.by

Ответить   Руслан Усачев Tue, 17 Mar 2009 22:21:24 +0200 (#834271)

 

Здравствуйте, Anarendil.

Вы писали 16 марта 2009 г., 22:58:11:

Это имеется в виду для читаемости или это предусматривает
синтаксис?
Если для читаемости, то можно написать скрипт который бы перед
перед каждой строкой произносил число пробелов или табов, это же
можно делать и по комбинации.
Скрипт несложный, взять текущую строку и посчитать табы или
пробелы в начале строки.
Я такое использую в Дельфи, это повышает читаемость и
понимаемость условий, циклов и блоков.
Ну и еще есть в Джоз озвучивать отступы, ну и можно делать схемы,
например, чтото подобное есть для Visual Studio.

Ответить   Tue, 17 Mar 2009 15:11:34 +0200 (#834122)

 

Vande omentaina, Олег!

Синтаксис у них такой извратный. Причём, как говорят, компилятор будет
страшно ругаться, если обсчитаться табами (ну это у них типа наших
операторных скобок). Вот и интересно, как народ выкручивается)

Ответить   Anarendil Tue, 17 Mar 2009 17:55:27 +0200 (#834191)

 

Anarendil:

Switch'а в Питоне нет.

Я думаю, что лучше всего для работы с Питоном найти редактор или IDE со
специальной поддержкой для Питона. Такой, чтобы поддерживал не только
отступы на автомате, но и удобное перемещение по тексту программы (по
операторам, функциям, классам), возможность сворачивать логические фрагменты
программы (например, функции, классы), оставляя лишь заголовки.

Есть и ещё одна причина, по которой, я считаю, лучше иметь специальную
поддержку. Большим преимуществом Питона и некоторых других языков является
возможность работать с интерпретатором в интерактивном режиме. Его можно
запустить, вводить и сразу же выполнять команды Питона в репле. Это даёт
возможность на ходу экспериментировать с кодом. Но если нужно вводить
достаточно большие конструкции (несколько строк), это быстро становится
неудобно. Редактор или IDE со специальной поддержкой решает эту проблему. Вы
можете набрать текст программы в окне редактора, загрузить его в работающий
интерпретатор и поэкспериментировать с набранным кодом в интерпретаторе.
Потом, если вы обнаружите, что какая-то функция работает не так, как вы
ожидали, можно перейти обратно в окно редактора, изменить функцию и
перезагрузить её снова в интерпретатор. Интерпретатор при этом не
перезагружается, и все определения, которые вы сделали в репле, остаются в
силе.

Ответить   Дмитрий Падучих Wed, 18 Mar 2009 17:59:03 +0500 (#834624)

 

Vande omentaina, Дмитрий!

А можете посоветовать что-то конкретное и джозабельное?

Ответить   Anarendil Wed, 18 Mar 2009 15:25:24 +0200 (#834639)

 

Anarendil:

Сам я пользуюсь Emacs'ом, но про него, кажется, говорили, что с Джозом он не
очень дружит. *shrug*

Ответить   Дмитрий Падучих Wed, 18 Mar 2009 18:33:36 +0500 (#834657)

 

Доброго времени суток, Дмитрий Падучих.

Из сообщения от 18.03.2009 15:01:

Не могли бы Вы порекомендовать что-либо конкретное?

У всех сред такого рода, что мне попадались,
проблемы с доступностью из Jaws, а тем более из NVDA.
Например родная IDLE (Python GUI) .

Кроме того существует много хороших бесплатных текстовых редакторов,
так или иначе реализующих некоторые из перечисленных Вами возможностей.
(Crimson Editor, Source Edit,SciTE Script Editor ). В них уже заложена
поддержка
синтаксиса Python (как впрочем и многих других языков).
Но они также плохо озвучиваются Jaws.

Может быть Вам известно о скриптовой поддержке Jaws чего либо из
вышеупомянутого?

С уважением, Руслан Усачев
RUsach***@t*****.by

Ответить   Руслан Усачев Wed, 18 Mar 2009 15:41:15 +0200 (#834643)

 

Vande omentaina, Руслан!

А SciTe тоже плохо озвучивается? Это тот, в котором autoIt'чики
пишут...

Ответить   Anarendil Wed, 18 Mar 2009 17:51:35 +0200 (#834693)

 

Доброго времени суток, Anarendil.

Из сообщения от 18.03.2009 17:53:

Вообще говоря ноги у него не от AutoIt растут...
В принципе озвучивается достаточно неплохо, по сравнению с остальными,
но не на 100%. И при этом ничего существенного при написании кода в
синтаксисе Python
не дает. Так что не стоит овчинка выделки в смысле его полировки (imho).

С уважением, Руслан Усачев
RUsach***@t*****.by

Ответить   Руслан Усачев Wed, 18 Mar 2009 19:49:14 +0200 (#834791)