Exceptions

The last time I [bashed exceptions] I got in a lot of trouble. In an off-the-cuff remark on the Joel on Software homepage, I wrote that I don’t like exceptions because they are, effectively, an invisible goto, which, I reasoned, is even worse than a goto you can see. Of course millions of people jumped down my throat. The only person in the world who leapt to my defense was, of course, Raymond Chen, who is, by the way, the best programmer in the world, so that has to say something, right?

© Joel Spolsky

По-русски:

Когда я в прошлый раз ругал exceptions, я получил кучу неприятностей. Я написал между делом на странице Joel on Software, что мне не нравятся exceptions, потому что они, по сути, являются невидимым goto, который, как я писал, ещё хуже, чем goto, который сразу видно. Разумеется, миллионы людей набросились на меня. Единственным человеком, выступившим в мою поддержку, был Рэймонд Чен, который, кстати сказать, является лучшим программистом в мире, а это о чём-то да говорит, так ведь?

Отсюда. И я про это писал когда-то, но мне не поверили:

Выясни, для начало, что такое try/catch, а уж потом говори глупости.

Joel Spolsky и Raymond Chen, кстати, определённо лучше меня (и вас тоже) понимают в программировании вообще и в exceptions в частности.

И, кроме того, если я говорю, что exceptions — это goto, это не значит, что я говорю, что exceptions — это плохо. И goto бывает полезен, в умелых руках. И error_reporting отключенный. Это всё инструменты, которые позволяют программировать на скорую руку, что часто бывает полезно. Главное уметь выделить моменты, когда всё это вредно.

Ссылки по теме:

Дальше
5 комментариев
A!e% 2005

Главное в танке что? Угу...

На самом деле все это фигня! Самое главное — уметь программировать, используя те инструменты, что есть. Будь то мегавысокоуровневый язык или bash/asm (а еще rexx есть, вот это круто было...).

И еще. Не стоит говорить словами других. Попробуй сделать продукт уровня,... эээ,... livejournal наверное. Тогда и посмотрим, что будет после этого тебе хорошо. На маленьких проектах говорить «это круто, это гавно» — не имеет абсолютно никакого смысла, все подходит. А вот когда проект большой... Тут и понимаешь, что «не все йогурты одинаково полезны».

Илья Бирман

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

enternet 2005

Насчет употребления исключений я согласен с авторами. Но исключения могут возникать и независимо от программиста — поэтому приходится иногда иметь сними дело. Да и всё на свете не проверишь — нет ещё такого надежного железа.

А по поводу «Joel Spolsky и Raymond Chen, кстати, определённо лучше меня (и вас тоже) понимают в программировании вообще и в exceptions в частности» хочется сказать, что после внимательного изучения сайта Сполького создается совершенно однозначное впечатление — 99% пиара и 1% мыслей. С продуктами у них тоже мутно. Какого либо известного софта не производят. Полноценного триала или демо нет — типа сайтом пользуйтесь, спасибо. Сказать внятно — они просто никто. Ещё одно никому неизвестное имя. Если бы не ссылки на статьи — то и я бы о них и не знал. Но понтов-то сколько — «Рэймонд Чен, который, кстати сказать, является лучшим программистом в мире». Ну так пусть им и остается 8-)

Илья Бирман

Joel пишет про то, как он борется с exceptions, которые возникают сами независимо от программиста:

!!In both Java and C++, my policy is:

  • Never throw an exception of my own
  • Always catch any possible exception that might be thrown by a library I’m using on the same line as it is thrown and deal with it immediately.!!

Отсюда

По поводу того кто это такие... Может быть вы назовёте несколько известных вам программистов их продукты, чтобы я понимал, какой у вас критерий «Кого-то»? Мне вот что-то кроме Линуса Торвальдса и Linux ниче в голову не приходит так сразу, и то — названия одинаковые. Звали бы его не Линус, а Майкл — фиг бы кто его помнил (при условии, что систему бы он всё равно назвал Linux).

Raymond Chen работает в Microsoft и, пожалуй, является одним из самых известных их программистов; думаю, это не самая мелкая IT-компания.

Joel Spolsky работал в Microsoft в Excel Team, занимался разработкой VBA. Сейчас у него своя небольшая компания.

Это правда довольно известные имена, если бы вы интересовались темой, вы бы знали о них. А так-то — ну я тоже не знаю ни одного известного артитектора, это же не значит, что их нет? Программисты — это не актёры, которых знают вообще все (правда я и актёров не знаю...)

enternet 2005

Я в курсе Чен и Сполски — это майкрософтовцы. Один бывший, другой текущий. Сами имена периодически всплывают в статьях и конференциях. плюс сполски иногда пишет статьи, изрядную часть которых я прочел, но особой пользы не увидел. Пожалуй правильней было сказать, что я возмущен ничем не аргументированным пафосом. Да и как его аргументировать? По какому публичному критерию определять какой программист лучший?

А насчет известных людей, то я как разработчик в основном уважаю разработчиков инструментальных средств и языков.
Например:
Андреас Хейсберг — главный идеолог Borland Delphi а ныне тот же по Microsoft .Net
Alan Kay — разработчик GUI, OOP, Smalltalk. Ныне ведет проекты Squeak и Крокет.
Керниган и Ричи — за Си.
Ну и конечно Билл Гейтс — за создание того рынка на котором мы все ныне работаем. И продвижение на этот рынок высококлассных продуктов типа винды, экселя и сиквелсервера.

Илья Бирман
  • Spolsky, я так понимаю, был одним из разработчиков VBA.
  • Как можно кого-то уважать за Си? :-)
  • Билл Гейтс — сомнительный программист, насколько я знаю. Он очень крутой бизнесмен, он лучше всех чувствует этот рынок, он знает, что надо делать, но какой он программист — я не знаю.
  • Господи, ну почему сиквел? Эс-кью-эл. И не надо мне говорить, что разработчики сами читают это «сиквел», мне наплевать, если разработчики неграмотные. SQL читается Эс-кью-эл. Period.
enternet 2005

По сравнению с С++ Си ещё как достоин уважения 8-) Хотя конечно и каменный век.

Baka 2005

!!Structured English Query Language («SEQUEL») was designed to manipulate and retrieve data stored in System R. The acronym SEQUEL was later condensed to SQL due to a trademark dispute!!
// en.wikipedia.org //

(Да, я читал это — «The acronym, SQL, stands for Structured Query Language. It is commonly pronounced as ’Sequel’, though this is not the proper way to pronounce it. SQL is simply pronounced, ’S Q L’. You say each letter individually. It is an acronym, not an abbreviation; there by it has no spoken form.»)

«И никакие не хыхки, и никакие не фыфки...»:
http://fishbowl.pastiche.org/2004/02/11/pronunciation_of_sql
^_^

Мои книги