Re[3]: Что означает понятие skills в резюме для работодателя
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.12.04 07:00
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>лучше....вот если бы вы взяли действительно и написали,


Поддерживаю всеми руками и ногами.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: As is или история о том как не надо писать код
От: Mika Soukhov Stock#
Дата: 21.12.04 08:33
Оценка: +1 -2 :)
Здравствуйте, _FRED_, Вы писали:

_FR>Очевидно, что сообщение в рантайме об ошибке приведения типов даст более правильную информацию, нежели ошибка обращения по нулевому поинтеру что позволит гораздо точнее локализовать место её возникновения и, соответственно, исправить.


А если мы передадим null и прикастим его C-like привидением? Будет тот же NullReferenceException. В том то и дело, что проверка на null нужна. Тогда, раз она нужна, почему бы не использовать сразу as, ведь он намного быстрее.
Re[3]: Что означает понятие skills в резюме для работодателя
От: Mika Soukhov Stock#
Дата: 21.12.04 08:36
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>Здравствуйте, Andy77, Вы писали:


A>>Написать, что ли, статью про опасности, возникающие при неявных приведениях типов в С++, про использование using в С# или про то, что нужно проверять делитель на ноль


DШ>похоже на сарказм....лично по мне чем больше статей хороших, тем лучше....вот если бы вы взяли действительно и написали, хуже от этого не было бы....имхо...совсем неплохо, когда есть возможность поучиться у специалистов..


Чисто мое мнение и сужу только по себе.

Специалисты обычно в журналы не пишут, у них своей работы много. И честно говоря, читать статью, где редактор журнала (а не именно специалист) учит меня как правильно писать код, мягко говоря, выглядит смешным. Это все равно что слушать, как нужно проектировать системы от архитектора, не закончившего удачно ни одного проекта.
Re[4]: Что означает понятие skills в резюме для работодателя
От: DuШes  
Дата: 21.12.04 09:31
Оценка: 5 (2) +6
Здравствуйте, Mika Soukhov, Вы писали:

MS>Здравствуйте, DuШes, Вы писали:


DШ>>Здравствуйте, Andy77, Вы писали:


A>>>Написать, что ли, статью про опасности, возникающие при неявных приведениях типов в С++, про использование using в С# или про то, что нужно проверять делитель на ноль


DШ>>похоже на сарказм....лично по мне чем больше статей хороших, тем лучше....вот если бы вы взяли действительно и написали, хуже от этого не было бы....имхо...совсем неплохо, когда есть возможность поучиться у специалистов..


MS>Чисто мое мнение и сужу только по себе.


MS>Специалисты обычно в журналы не пишут, у них своей работы много. И честно говоря, читать статью, где редактор журнала (а не именно специалист) учит меня как правильно писать код, мягко говоря, выглядит смешным. Это все равно что слушать, как нужно проектировать системы от архитектора, не закончившего удачно ни одного проекта.


да речь не об этом...ваше личное мнение о Владе Чистякове меня вообще не интересует, это очень круто, что Вы специалист, есть законченные проекты (без всякого сарказма), но если человек нашел возможность поделиться опытом, то я считаю что это достойно по крайней мере уважения, а не насмешек и тем более проявления неуважения, и совсем не причем тут кто и кем работает и у кого сколько свободного времени (кстати, времени свободного ни у кого нет)...если Вы считаете, что в статье есть изъяны, никто же не запрещает написать отдельную статью и опровергнуть (опять таки аргументировано) те доводы, которые приведены в статье Влада Чистякова...

От себя скажу, что всегда очень внимательно читаю статьи, посвященные некоторым тонкостям программирования под .net (пока не имею опыта в написании проектов под .net, но думаю, со времением это компенсируется), и для себя отметил, что статьи Влада отличаются очень глубоким подходом и анализом (достаточно сравнить статьи Prashant Sridharan(ms) о будущих возможностях языка C#, опубликованный перевод на gotdotnet, и статью Vlad2 о generic-типах, неполных типах, анонимных методах и пр.., опубликованную в rsdn mag)

ps: далеко не факт, что главный редактор журнала понимает меньше чем какой-либо трижды заслуженный специалист с готовыми проектами, даже наоборот, в связи со спецификой работы у специалиста наврядли найдется время уделить внимание проведению анализа кода, его чистоте, правильности и пр..., в то время как человек, конкретно изучающий чисто технологию программирования (не конкретный проект) уделит таким вопросам и тонкостям гораздо больше внимания....имхо...
pps: не хотел кого-либо упрекнуть в непроффесиональности...
Re[5]: Что означает понятие skills в резюме для работодателя
От: Mika Soukhov Stock#
Дата: 21.12.04 09:41
Оценка: 16 (1) :)
Здравствуйте, DuШes, Вы писали:

DШ>От себя скажу, что всегда очень внимательно читаю статьи, посвященные некоторым тонкостям программирования под .net (пока не имею опыта в написании проектов под .net, но думаю, со времением это компенсируется), и для себя отметил, что статьи Влада отличаются очень глубоким подходом и анализом (достаточно сравнить статьи Prashant Sridharan(ms) о будущих возможностях языка C#, опубликованный перевод на gotdotnet, и статью Vlad2 о generic-типах, неполных типах, анонимных методах и пр.., опубликованную в rsdn mag)


Сама по себе статья читается легко. Это все же заслуга автора. А смысл... Вообще-то это перевод спецификации, причем не детальный (некоторые важный на мой взгляд моменты упущены).

DШ>pps: не хотел кого-либо упрекнуть в непроффесиональности...


Ты меня тоже не правильно понял. Я никого не упрекал. Я лишь предостеригаю, что не стоит верить всему на слово.
Re: As is или история о том как не надо писать код
От: feanor_ka  
Дата: 21.12.04 14:09
Оценка:
Здравствуйте, Владислав Чистяков (VladD2), Вы писали:

Теперь о скорости. В Framework 1.0 и 1.1 скорость операторов была следующей: самым быстрым был оператор is, за ним шел as и последним шел оператор приведения типов (). Причем is и as отличались очень незначительно, а () был медленнее приблизительно на 10-20%. Даже применение as с последующей проверкой на null было заметно быстрее, чем оператор ------>присвоения.<----

Это не ошибка??? Может быть имелось ввиду "оператор приведения"
Re[2]: As is или история о том как не надо писать код
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.12.04 15:31
Оценка:
Здравствуйте, feanor_ka, Вы писали:

_>Это не ошибка??? Может быть имелось ввиду "оператор приведения"


Да, несомненно. Имелось в виду "оператор приведения итипов".

Спасибо, за замечание.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что означает понятие skills в резюме для работодателя
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.12.04 15:15
Оценка:
Здравствуйте, DuШes, Вы писали:

...

Спасибо за добрые слова.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Что означает понятие skills в резюме для работодателя
От: DuШes  
Дата: 23.12.04 15:59
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, DuШes, Вы писали:


VD>...


VD>Спасибо за добрые слова.


вот как раз сейчас и
Re: As is или история о том как не надо писать код
От: AlLucky Беларусь Qulix Systems
Дата: 24.12.04 08:40
Оценка: :)
Здравствуйте, Владислав Чистяков (VladD2), Вы писали:

Извините, что потревожил Вас.
В статье было сказаноо неэстетичности оператора приведения типов типа (toType) myObject.
А чем Вам такое не нравится?
Почему это не есть хорошо?
И что Вы тогда скажете о ВБшном CType (fromObject, toType)?

Спасибо. А то я так не любил сиппшные приведения и так любил сишные, а тут на тебе — говорят, что это чуть ли не полный отстой с точки зрения эстетики.....
Sincerely Mine ... AlLucky Sly << RSDN@Home 1.1.4 Слушаю болтовню коллег ...>>
Aleksandr Sly
Re[2]: As is или история о том как не надо писать код
От: DuШes  
Дата: 24.12.04 08:46
Оценка: +1
Здравствуйте, AlLucky, Вы писали:

AL>Здравствуйте, Владислав Чистяков (VladD2), Вы писали:


AL>Извините, что потревожил Вас.

AL>В статье было сказаноо неэстетичности оператора приведения типов типа (toType) myObject.
AL>А чем Вам такое не нравится?
AL>Почему это не есть хорошо?
AL>И что Вы тогда скажете о ВБшном CType (fromObject, toType)?

AL>Спасибо. А то я так не любил сиппшные приведения и так любил сишные, а тут на тебе — говорят, что это чуть ли не полный отстой с точки зрения эстетики.....


лично я для себя в статье уловил одну (не самую важную мысль): для приведения value-type типов все равно приходится использовать оператор приведения (), для reference-type типов можно использовать и () и as...то есть получаем два стиля оформления? зачем это нужно? лучше использовать один тип оформления по старому (), чем сочетать два стиля для различных типов...

Насчет эстетичности..мне лично все же ближе старый добрый ().
Re[5]: As is или история о том как не надо писать код
От: TK Лес кывт.рф
Дата: 24.12.04 23:13
Оценка: 30 (2) :))) :))
Здравствуйте, Mika Soukhov, Вы писали:

MS>Вообще, данный форум не для таких вещей. Здесь обсуждаются тенхические детали. Если хочешь пообщаться лично, пиши автору на мыло.


думаю, что стоит ждать очередной нетленки для сишников — dynamic_cast<T&> vs dynamic_cast<T*> а то, получается, что они без своей доли просвящения остались...
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: As is или история о том как не надо писать код
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 00:49
Оценка: 8 (2) +1
Здравствуйте, AlLucky, Вы писали:

AL>Извините, что потревожил Вас.


Да, ничего, ничего. Этот форум для того и создан, чтобы треваожить.

AL>В статье было сказаноо неэстетичности оператора приведения типов типа (toType) myObject.

AL>А чем Вам такое не нравится?

Если не ошибаюсь, я в статье оговорился, что это дело вкуса. О эстетике я в основном говорил, так как это один из основных аргументов тех кто заменяет приведение типов на as.

AL>Почему это не есть хорошо?


В принципе можно попытаться привести несколько аргументов против "(type)":
1. Оператор () приводит к неоднозначностям которые разрешаются в C# не совсем честными методами. Например, вот такой код будет верным приведением типов:
int i = (int)-1.2;

А вот это не верное:
System.Int32 i = (System.Int32)-1.2;

И это соответственно тоже (даже если A — это алиас типа или тип реализующий приведение типов):
A i = (A)-1.2;

А вот так:
System.Int32 i  = (System.Int32)(-1.2);
int          i1 = (int)(-1.2);
A            i2 = (A)(-1.2);

все будет считаться нормальным для любого типа поддерживающего данное приведение.
Причем разница в первом случае заключается только в том, что int является встроенным типом языка, а System.Int32 и A нет.
Дело в том, что для упрощения парсинга разработчики языка ввели ряд эвристический методов разрешения грамматических конструкций. Обычно это не приводит к проблемам, но в некоторых случаях способно усложнить восприятие кода.

Естественно, что неоднозначности приходится разрешать не только компилятору, но и человеку. Так что процесс чтения кода несколько усложняется.

2. Если после приведения типов требуется обратиться к членам типа к которому приведен объект, то требуется брать выражение приведения в дополнительные скобки, так как доступ к членам (точка) имеет более высокий приоритет:
((B)a).SomeMethod();

Это само по себе выглядит не очень хорошо, а будучи наложенным на другие приведения портит читаемость кода очень сильно:
((D)((C)((B)a).Xxx).Yyy).SomeMethod();

Пойди разберись в этом нагромаждении скобок.
И тут некий другой синтаксис приведения выглядил бы лучше. Нарпмер, с as это будет выглядить так:
(((a as B).Xxx as C).Yyy as D).SomeMethod();

В принципе, по-моему, так более читабельно. Однако было бы еще лучше если можно было писать так:
D(С(B(a).Xxx).Yyy).SomeMethod();

К сожалению, создатели C# взяли пример с С, а не С++ или Дельфи.

AL>И что Вы тогда скажете о ВБшном CType (fromObject, toType)?

CType в сочетании с СХхх мне кажется действительно более красивым решением. Однако оно несколько громоздкое. Лучшим вариантом мне кажется просто функциональная запись. Тогда ко всему прочему еще и упростился бы синтаксис операторов приведения типов (implicit и explicit).

AL>Спасибо. А то я так не любил сиппшные приведения и так любил сишные, а тут на тебе — говорят, что это чуть ли не полный отстой с точки зрения эстетики.....


Откровенно говоря мне по фигу чистая эстетика, но не по фигу читаемость кода и простота его написания. Исходя из этого можно сказать, что явное приведение типов — это вообще зло. Так что лучше пользоваться такими вещами как виртуальные методы, паттерны доступа вроде Visitor-а и обобщенными контейнерами. При грамотном дизайне зачастую удается создать очень красивые решения, вообще не прибегающие к приведению типов. При этом так же улучшаются возможности расширения (рефакторинга) кода, так как явные приведения очень часто приводят к проблемам при изменении дизайна (везде где они использовались может потребоваться внести изменения).
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: As is или история о том как не надо писать код
От: Аноним  
Дата: 25.12.04 10:05
Оценка: +2 :)
Здравствуйте, Владислав Чистяков (VladD2), Вы писали:


int    i = 123;
void*  p = &i;
double d = *(double*)p;
printf("i = %f", d);


Ха-ха.. ишь чё MS.NET придумал чтобы очернить чистый Си..

Делать надо так:

int    i = 123;
void*  p = &i;
double d = ((double)*p);
printf("i = %f", d);


И не страдать от надуманных проблем.
Re[3]: As is или история о том как не надо писать код
От: tarkil Россия http://5209.copi.ru/
Дата: 27.12.04 06:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


Запустил я однажды под отладчиком в седьмой студии C++'ную процедуру, которая в нормальной ситуации работает меньше секунды, но генерит около пяти тысяч исключений (и сама же их ловит). Ой, мама... Минут пять работала.
--
wbr, Peter Taran
Re: As is или история о том как не надо писать код
От: tarkil Россия http://5209.copi.ru/
Дата: 27.12.04 06:09
Оценка: +1
Здравствуйте, Владислав Чистяков (VladD2), Вы писали:

ВЧV>Аннотация:

ВЧV>Работая над открытыми проектами, автор заметил, что операторы as и is многими программистами зачастую используются ненадлежащим образом. Результатом очередного двухчасового поиска ошибки и стала эта статья.

Хорошая статья, спасибо, Владислав. Простая и полезная.

Одно замечание про аварию с Ариал 5. Много раз слышал эту историю как аргумент в пользу проверки всего и вся. Однако, почему-то никто из авторов ещё не отмечал тот факт, что, независимо от любых проверок, алгоритма для управление ракетой с таким вот неожиданным параметром не было. Даже если бы программисты вставили проверку, ракета погибла бы — чем бы ей помог exception вида "value out of expected bounds"? Оно б помогло только локализовать ошибку и исправить её в софте для следующей ракеты (если ракета передаёт такую информацию в ЦУП )
--
wbr, Peter Taran
Re[4]: As is или история о том как не надо писать код
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.04 08:50
Оценка: 1 (1)
Здравствуйте, tarkil, Вы писали:

T>Запустил я однажды под отладчиком в седьмой студии C++'ную процедуру, которая в нормальной ситуации работает меньше секунды, но генерит около пяти тысяч исключений (и сама же их ловит). Ой, мама... Минут пять работала.


И какое отношение имеет скорость работы исключений в С++ в отладчике к скорости работы онных в дотнете без отладчика?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[5]: As is или история о том как не надо писать код
От: tarkil Россия http://5209.copi.ru/
Дата: 27.12.04 08:58
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>И какое отношение имеет скорость работы исключений в С++ в отладчике к скорости работы онных в дотнете без отладчика?


Ответ содержится в вопросе: и то и то является "скоростью работы"

А если серьёзно, то не надо много исключений кидать. Ибо скажет много неласковых слов тот, кому придётся этот код дебажить. Это как с as/() — "у меня всё работает", а коллеги с горя могут и повеситься.
--
wbr, Peter Taran
Re[6]: As is или история о том как не надо писать код
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.04 10:49
Оценка:
Здравствуйте, tarkil, Вы писали:

T>А если серьёзно, то не надо много исключений кидать. Ибо скажет много неласковых слов тот, кому придётся этот код дебажить. Это как с as/() — "у меня всё работает", а коллеги с горя могут и повеситься.


Так я ж не предлагаю много исключений кидать. Речь о другом — замене исключений на коды возврата. Причем признается что это убогий дизайн и оправдывается скоростью.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[2]: As is или история о том как не надо писать код
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 10:55
Оценка:
Здравствуйте, tarkil, Вы писали:

T>Хорошая статья, спасибо, Владислав. Простая и полезная.


Спасибо за добрые слова.

T>Одно замечание про аварию с Ариал 5. Много раз слышал эту историю как аргумент в пользу проверки всего и вся. Однако, почему-то никто из авторов ещё не отмечал тот факт, что, независимо от любых проверок, алгоритма для управление ракетой с таким вот неожиданным параметром не было. Даже если бы программисты вставили проверку, ракета погибла бы — чем бы ей помог exception вида "value out of expected bounds"? Оно б помогло только локализовать ошибку и исправить её в софте для следующей ракеты (если ракета передаёт такую информацию в ЦУП )


Я привел этот пример не в целях убедить всех проверять все и вся. Оснавная цель этого примера была наглядно продемонстрировать пагубность рассуждений типа "в данных условиях все ОК". Черт кроется в деталях и надо стараться делать так чтобы этих самых деталей было как можно меньше, ну, или чтобы как можно меньше от них зависить.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.