Здравствуйте, Sheridan, Вы писали:
WH>>А я бы сказал что можно сделать машину котороя уделает обе. Причем она будет даже проще. S>Можно.
Только учитывая следующею строчку ИМХО ты даже близко не представляешь как это сделать.
S>А можно на асме написать, и уделать и дотнет, и жаву.
S>Выбор идет между скоростью проектирования/программирования и скоростью работы. Я выбираю скорость работы. Корпорации и компании выбирают скорость проектирования. Почемуто простые фрилансеры и мелкие конторы тянутся вслед компаниям, не замечая что заказчика можно победить не только скоростью написания софта но и тем, что этот софт будет прекрасно работать на тех машинах, которые заказчик купил 2 года назад в уцененке, да к томуже что можно установить этот софт и забыть про сервак, пока винт не посыпется.
Так что же ты до сих пор не уделал всяких ламеров которые пишут тормозные поделки на .НЕТ и жабе?
Тут есть две причины:
1)Это сделать просто только языком. Когда попробуешь написать на асме то что на шарпе занимает сотню тысяч строк Короче оно будет постоянно голючить и падать. Да и работать будет скорей всего сильно медленней ибо все ресурсы съест борьба с багами и на оптимизацию времени не останется.
2)Ориентироваться на жмотов которые покупают компы в уценке бесполезно ибо они всеравно софт не купят. И тем болие поддержку не закажут.
Короче окажи услугу себе и окружающим: займись собственным образованием ибо те "знания" что ты демонстрируешь в форуме просто смешны.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Andrei N.Sobchuck, Вы писали: ANS>А как он знает, что array.Count не меняется?
В дотнете невозможно изменить длину массива. Сделано специально, чтобы позволять подобные оптимизации.
Если вопрос о компиляторе С++ и произвольной коллекции, то у компилятора может оказаться достаточно информации о том, что происходит внутри цикла, чтобы понять, что результат Count() никогда не изменяется.
Я написал может оказаться потому, что С++, хотя и оборудован средствами коммуникации между разработчиком класса и компилятором, не требует их использовать. В частности, далеко не всегда можно заинлайнить метод Count() и далеко не всегда удастся заинлайнить обращения к коллекции внутри цикла или вывести неизменность из сигнатур используемых методов (оператору [] достаточно быть объявленным как const, чтобы компилятор имел право предполагать неизменность внутренних полей коллекции после его вызова даже без детального анализа кода). В частности, именно эту проблему решают template-based библиотеки типа STL. S>>Резюме: инструмент поиска причины проблем с производительностью — не глаза, а профайлер. А ему, извини, по барабану, насколько "невинно" выглядит код. ANS>Это бесспорно.
Ну, люди до сих пор думают, что могут определить степень влияния фрагментов кода на производительность по наличию скобочек, или легко победить back-end промышленного компилятора ассемблерными вставками. И все это духом единым, без костылей типа профайлера.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, iZEN, Вы писали:
ZEN>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Ну принципиально то, что они объединаются в одну сущность, а не 2 функции. Да, кстати — это синтаксический сахар, потом внутри MSIL они превращаются в обычные геттеры/сеттеры.
АХ>>Ну и писать АХ>>
ZEN>Проперти в C# — это завуалированный и неочевидный синтаксис с семантикой. Совершенно непонятно, что скрывается за простым присвоением мемберу (кстати, как отличить public-поле от свойства?) значения и получением от него значения. Вы скажете, что public-поле в ООП-приложении неприлично выставлять, но в некоторых ситуациях это сделать легче (особенно в финальных классах) для описания констант.
Угу.. Вместо того, чтобы поле публичным сделать, лучше добавить еще от 3 до 6 строчек на геттер/сеттер или пропертю в шарпе.. Причем в подавляющем большинстве случаев реализация геттеров/сеттеров тривиальна...
Здравствуйте, WolfHound, Вы писали:
WH>Так что же ты до сих пор не уделал всяких ламеров которые пишут тормозные поделки на .НЕТ и жабе?
Потому что не поспею. Уж лучше я это время потрачу на изучение Qt.
Здравствуйте, Gajdalager, Вы писали:
G>Угу.. Вместо того, чтобы поле публичным сделать, лучше добавить еще от 3 до 6 строчек на геттер/сеттер или пропертю в шарпе..
Зачем такие сложности? Нажимаем шорткат и решарпер все сам за нас сделает
Здравствуйте, prVovik, Вы писали:
V>Здравствуйте, Gajdalager, Вы писали:
G>>Угу.. Вместо того, чтобы поле публичным сделать, лучше добавить еще от 3 до 6 строчек на геттер/сеттер или пропертю в шарпе.. V>Зачем такие сложности? Нажимаем шорткат и решарпер все сам за нас сделает
Зачем такие сложности? Если никаких дополнительных действий не надо — выносим поле в паблик и никому ни за кого ничего делать не придеться
Здравствуйте, xvost, Вы писали:
ANS>>А как он знает, что array.Count не меняется? X>Потому что массивы immutable
Несколько не корректно. Массивы в .НЕТ еще как mutable у них только размер immutable.
Болие того в .NET вобще нет immutable типов что ИМХО очень плохо.
Эмуляция immutable типов (например string или любой другой класс у которого нет мутирующих методов) приводит к тому что рантайму очень сложно применять агрессивные оптимизации.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Gajdalager, Вы писали:
G>Угу.. Вместо того, чтобы поле публичным сделать, лучше добавить еще от 3 до 6 строчек на геттер/сеттер или пропертю в шарпе.. Причем в подавляющем большинстве случаев реализация геттеров/сеттеров тривиальна...
Если поле сделать публичным, то как можно брякнуться в отладке на попытку изменения поля ?
Или искать все строки
Здравствуйте, Sheridan, Вы писали:
WH>>Так что же ты до сих пор не уделал всяких ламеров которые пишут тормозные поделки на .НЕТ и жабе? S>Потому что не поспею. Уж лучше я это время потрачу на изучение Qt.
Qt это не то на что имеет смысл тратить время.
Все библиотечки всравно не изучишь ибо их легион, а ты один.
Болие того в них нет ничего такого что может тебе дать какие либо преимущества.
Тебе нужны фундаментальные знания, а не глупые библиотечки.
Нужно понимать что как и почему именно так устроено.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Что-то я ничего не понял. Это слово что обозначает? Употребление анаши в одиночестве? Но тогда ведь вместо второй "о" все равно останется "а", не так ли?
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Gajdalager, Вы писали:
G>>Угу.. Вместо того, чтобы поле публичным сделать, лучше добавить еще от 3 до 6 строчек на геттер/сеттер или пропертю в шарпе.. Причем в подавляющем большинстве случаев реализация геттеров/сеттеров тривиальна... M>Если поле сделать публичным, то как можно брякнуться в отладке на попытку изменения поля ? M>Или искать все строки M>
M>myClass.myPubllicValue = XXX
M>
M>и ставить там бряки ?
В шарпе можно было бы создать одноимённую пропертю и брейк поставить в ней.. Но пропертю я бы создал, только когда нужно (в данном случае, чтобы брэйк поставить).. Остальные публичные поля так и остались бы публичными. А в Жаве пропертей нет Лично мне не хватает..
Здравствуйте, Sheridan, Вы писали:
S>>>Ошибаешся, понимаю. Сколько можно писать, ято я оношусь к дотнету как к ВБ? АХ>>
S>Ну, ничего другого я не ожидал... S>Я не могу поверить просто что люди в восторге от подобной технологии. Обещали кроссплатформенную виртмашину типа явы. Что имеем?
Мощную компонентную многоязычную платформу, технологически превосходящую JVM (в частности в плане поддержки рефлексии и динамических языков).
Кроссплатформенность — да, с этим пока похуже, но Mono развивается. FW 1.1 уже полностью поддерживают насколько я знаю.
C# 2.0 — тоже, осталось только доделать BCL 2.0.
S> тормознутую переделку бэйсика на новый лад.
1) Ну давай бенчмарки с тормозами. По моим ощущениям на большинстве невычислительных задач разница с C++ минимальна, а где-то C++ и серьезно проигрывает (особенно где много работы с памятью).
2) Под .NET полно языков, в том числе и Nemerle, который Бейсиком ну никак не назовешь
Я тоже раньше считал, что это тормоза (по сравнению с C++). Погонял бенчмарки и понял что это не так. Да собственно и неудивительно — с точным уплотняющим сборщиком мусора выделение памяти в куче практически так же дешево как не стеке, в отличие от malloc/new.
S> Да, улучшили. Да, поменяли синтаксис. Да, прикрутили студию. И развели сверхмощную рекламную компанию. Про кроссплатформенность я уже и не вспоминаю. Далее, что микрософт проталкивало раньше в массы? Правильно, ВБ.
Задумайся, почему MS отказался от уже раскрученного и весьма популярного ВБ. А ведь его упрашивали, петиции писали, чтобы он этого не делал.
S> А что сделает манагер из МС, если видит, что продукт непопулярен? Начнет думать, как сделать популярным, а заодно и привязать к операционке, дабы не было прецендентов отказа от использования винды. Скажеж дотнет не привязан к винде?
Не привязан
S> А люди глотают полученную наживку, радуются сверхлегкости кодинга, не замечая что все меньше и меньше оставляют себе места для маневра.
Сверхлегкость кодинга — за этим пожалуйста к Python и Ruby
АХ>Да собственно и неудивительно — с точным уплотняющим сборщиком мусора выделение памяти в куче практически так же дешево как не стеке, в отличие от malloc/new.
Почему-то вспомнился анекдот про студентов с финальной фразой: "... а потом начинается сессия!"
Здравствуйте, WolfHound, Вы писали:
WH>Qt это не то на что имеет смысл тратить время. WH>Все библиотечки всравно не изучишь ибо их легион, а ты один.
Мне пока Qt хватает.
WH>Болие того в них нет ничего такого что может тебе дать какие либо преимущества.
Кроссплатформенность.
WH>Тебе нужны фундаментальные знания, а не глупые библиотечки. WH>Нужно понимать что как и почему именно так устроено.
Что я не понимаю?
[RSDN@Home][1.2.0][alpha][668]
[Да не будем на авось гадать о величайшем! [Гераклит Эфесский]]
Здравствуйте, Gajdalager, Вы писали:
G>В шарпе можно было бы создать одноимённую пропертю и брейк поставить в ней.. Но пропертю я бы создал, только когда нужно (в данном случае, чтобы брэйк поставить).. Остальные публичные поля так и остались бы публичными.
Ну и зачем ? Если можно набить prop нажать Tab
и получить заглушку вида.
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
Меняем только тип(автоматически меняется и в проперте)
ну и вводим имена.
И вообще мой опыт говорит, что как только ты сделаешь поле public буквально через пару дней придется оборачивать его в пропертю.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Gajdalager, Вы писали:
G>>В шарпе можно было бы создать одноимённую пропертю и брейк поставить в ней.. Но пропертю я бы создал, только когда нужно (в данном случае, чтобы брэйк поставить).. Остальные публичные поля так и остались бы публичными.
M>Ну и зачем ? Если можно набить prop нажать Tab
А кода меньше будет.. В классе, допустим, 5 полей, которые по логике публичные, а строчек кода — мама дорогая! И все вида getField/setField, причем тривиальной реализаци.. Сразу и не видно, который делает чего, а который — только устанавливает.. M>И вообще мой опыт говорит, что как только ты сделаешь поле public буквально через пару дней придется оборачивать его в пропертю.
Что, прям таки все или большинство? M>И вообще прямой доступ к переменным считаю злом.
Тоже так считал.. А потом подумал, ну какая разница — задаём мы значение поля через функцию или напрямую, если функция только то и делает, что присваивает полю значение? Правильно, только в размере кода и в том, что в случае функции нам можно будет добавить дополнительную логику безболезненно.. Если в случае Жавы еще можно понять, зачем сразу геттера писать (чтобы потом не переписывать клиентский по отношению к этому классу код), то зачем в шарпе, где есть пропертя и можно подменить поле на геттер/сеттер совсем без крови и только тогда, когда понадобится?