Валерий Лаптев писал(а):
Я склонен к первому, а не второму. Для начинающих - надо все писать явно и ручками. Если блок finally обязателен, то и думать, что туда писать - обязательно. А думать для начинающего - всегда хорошо.
Я совершенно против такого подхода. Это все равно как заставлять студентов вместо
while end и
if elsif else end использовать
goto - чтобы студенты "понюхали порорху". Привыкать нужно к хорошему, а плохого в любом случае будет предостаточно, когда они перйдут на "промышленные" языки. Никто же не требует, чтобы начинающие брали на себя сборку мусора, контроль за выходом индекса за границы массива, контроль типов, а перепоручают это всё компилятору и среде времени исполнения.
Корни такого подхода преподавателей мне понятны: за неимением хороших учебных проектов, на которых студентам можно потренироваться, им предлагается вручную повторить то, что давно реализовано в компиляторах и библиотеках. При этом им явным образом запрещают пользоваться удобными и надежными инструментами. Будущим системным программистам, может быть, это иногда полезно - чтобы лучше понимать кухню. Но есть риск, что студенты так и не освоят нормальные инструменты программирования, а извращения "промышленных" языков будут воспринимать как должное. Кстати, ненавязчивый отказ от
finally в пользу
using даже в "промышленном" C# - это аргумент в пользу моей позиции.