Re[11]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 07.11.05 15:03
Оценка: +1
E>>>Какие-такие смартпоинтеры, которые толком не поддерживаются компилятором.
DAN>>Ну например о которых Джэф Элджер в С++ библиотека программиста пишут.
DAN>>ИМХО, сказать что эти сущности полностью поддерживаются компилятором (в том смысле что не позволят программисту допустить ошибку с управлением памятью) — нельзя.
LM>А что, .NET языки полностью исключают ошибку программиста? Может они тогда и программы сами писать уже умеют?
а где это вы такое у меня прочитали? я писал лишь о том что допустить ошибку при работе с памятью на .NET значительно сложнее чем на С++ и особенно на С.

DAN>>Я уж не говорю о всяких вещах типа "кто создает память?", "кто удаляет память?", что _вообще_ не поддерживается компилером, только соглашениями и архитектурой. опять лишний источник ошибок для программиста и лишняя работа тестерам.

LM>Что значит "не поддерживается компилером"? Вот у меня уже не первый десяток проектов с пулами потоков и распределенным взаимодействием на С++ сдано в эксплуатацию, и что-то как-то не нарываюсь на меморилики.... видимо не судьба...
Это значит что мне приходится в документе описывающим архитектуру проекта, или в комментариях к методу или еще где-то писать "уважаемые разработчики! передайте в эту функцию вами выделенный буфер и не забудьте его потом удалить", и далее, никакими средствами кроме code review или долгим дебагированием я ошибку разработчика, нарушившего этого правило не найду.

По поводу сданных вами проектов в реализацию: ну где я писал о том, что на С/С++ нельзя писать больших проектов? Я писал только что на языках с автоматическим управлением памятью их писать быстрее, потому что допускаешь меньше ошибок и тратишь меньше ресурсов.

Влад писал об этом ниже. Прочитайте, пожалуйста, всю ветку.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[16]: Смотрел на Java код. ...много думал.
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.05 15:27
Оценка: 1 (1) +4
Здравствуйте, VladD2, Вы писали:
VD>Уроды потому что.
О! Это все объясняет. Конечно же. В том то и дело, что крайне трудно быть неуродами. Может, МС там девелоперам недоплачивает? И туда идут только студенты от безысходности?
VD> Это всего лишь пример дизайнерской ошибки. Наботу с картинками нужно было реализовывать как набор статических методов. Один для чтения заголовка, другой для работы с картинкой, третий для работы с ее содержимым.
Да-да-да. И это бы автоматически реализовало диспозабл за нас.
VD>Во-вот. Вымешленных. Это все и объясняет. А по жизни я что-то проблем не встречаю.
Везет значит. Я вот — встретил. В самом что ни на есть кошерном коде. К счастью, удалось это оттрассировать быстро — часа за четыре. Это, Влад, тебе только кажется, что "файл залокан — сразу найдешь". Во-первых, залокан он только на чтение, и ты об этом не узнаешь, пока не начнешь в него писать. Во-вторых, GC таки отрабатывает нулевое поколение шустро, и обнаружить проблему можно только под некоторой нагрузкой. В-третьих, это не такая маленькая проблема. Если бы фреймворк при открытии файла ждал, пока его отпустят, это был бы всего лишь перформанс проблем. Увы — обнаруживается это как странные ексепшны во время работы приложения. То есть твои пользователи в 5 случаях из 100 получают 500 Error. Для справки: при 10000 визитах в день, 5% — это 500 человек. Примерно одна десятая от них звонит в тех. суппорт. Представляешь себе расходы на это? Оттого, что некорректно реализован IDisposable.

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

А если у тебя есть какие-то соображения на тему того, как писать код, устойчивый к таким проблемам, то расскажи нам, пожалуйста. А мы, в свою очередь, проведем ликбез среди девелоперов в MS. А то я вот не уверен, что нашел единственный глюк во всем фреймворке.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Смотрел на Java код. ...много думал.
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.11.05 23:17
Оценка: :))
Здравствуйте, LeeMouse, Вы писали:

LM>Про умные указатели не слыхали? Или вспомнить религия не позволяет?


Конечно не слыхал. Для этого же нужно быть таким умным и веселым как ты.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Смотрел на Java код. ...много думал.
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.11.05 23:17
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>О! Это все объясняет. Конечно же. В том то и дело, что крайне трудно быть неуродами. Может, МС там девелоперам недоплачивает? И туда идут только студенты от безысходности?


В МС слишком много программистов. Так что есть там и уроды, и нормальные люди. К сожелению кучу второстепенного кода пишут далеко не самые лучшие представители. Посему во фрэймворке косяков хватает.

S>Да-да-да. И это бы автоматически реализовало диспозабл за нас.


Это избавило бы от ситуации когда имеется неявно заблокированный ресурс. Посмотри как написан тот же АПИ к фаловой системе. Там похожих мест масса, но блокировки файлов не просходит.

VD>>Во-вот. Вымешленных. Это все и объясняет. А по жизни я что-то проблем не встречаю.

S>Везет значит. Я вот — встретил. В самом что ни на есть кошерном коде. К счастью, удалось это оттрассировать быстро — часа за четыре.

Один раз? Ну, это конечно сразу бросает огромную тень. Ты попиши на голом ВыньАпи и посмотри сколько там косяков вылезает. Все, как бы, познается в сравнении.

S> Это, Влад, тебе только кажется, что "файл залокан — сразу найдешь".


А, ну, ясно это у меня глюки. Проблема то есть, но она как суслик... ее не видно...

S> Во-первых, залокан он только на чтение, и ты об этом не узнаешь, пока не начнешь в него писать.


При эксклюзивной то блокировке используемой по умолчанию? Ну-ну.

S> Во-вторых, GC таки отрабатывает нулевое поколение шустро, и обнаружить проблему можно только под некоторой нагрузкой.


Не так быстро как тебе кажется. Конечно вероятность получить тнудно понимаемую ошибку есть, но она довольно эфимерна. Как раз под нагрузкой ЖЦ пашет чаще.

S> В-третьих, это не такая маленькая проблема. Если бы фреймворк при открытии файла ждал, пока его отпустят, это был бы всего лишь перформанс проблем.


Да? И с чего бы это? Проблем с производительностью открытый файл не создает. Он создает блокировку. Вот она уже может попродить проблемы, но не с производительностью.

S> Увы — обнаруживается это как странные ексепшны во время работы приложения. То есть твои пользователи в 5 случаях из 100 получают 500 Error. Для справки: при 10000 визитах в день, 5% — это 500 человек. Примерно одна десятая от них звонит в тех. суппорт. Представляешь себе расходы на это? Оттого, что некорректно реализован IDisposable.


Ага. Теперь остается умножить это на количество населения в стране, и из этих данных уже можно будет узнать сколько у нас аэродромов. (с) Райкин.

Что за манера производить вычисления над высасаными из пальца цифрами и делать на их базе далеко идущие выводы?

Давай проще. Подведи статистику проблем с незакрытыми файлами на базе нашего форума. Если она окажется хоть сколь-нибудь значимой, то продолжим разговор. А если нет, то и говорить не очем, так как проблема высасона из пальца.

Лично я вообще не помню, чтобы кто-то поднимал вопрос о блокировках файлов.

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


Я то с файлами работаю плотно. И как-то особых проблем не заметил. А вот ты... ну, да я уже все сказал.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Смотрел на Java код. ...много думал.
От: CreatorCray  
Дата: 08.11.05 00:08
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Давай проще. Подведи статистику проблем с незакрытыми файлами на базе нашего форума. Если она окажется хоть сколь-нибудь значимой, то продолжим разговор. А если нет, то и говорить не очем, так как проблема высасона из пальца.

VD>Лично я вообще не помню, чтобы кто-то поднимал вопрос о блокировках файлов.
Эээ.. Не знаю насколько я в тему попаду щас, но у меня (правда редко) при чтении форумов вываливается ошибка что то типа "база блаблабла залочена пользователем Admin. Все в сад!" Лечится перезапуском януса. Оно?
Re[19]: Смотрел на Java код. ...много думал.
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.05 01:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Эээ.. Не знаю насколько я в тему попаду щас, но у меня (правда редко) при чтении форумов вываливается ошибка что то типа "база блаблабла залочена пользователем Admin. Все в сад!" Лечится перезапуском януса. Оно?


Такое сообщение бывает если параллельно запустить Эксес и открыть в нем БД Януса. Вот только это проблемы джета написанного на С++.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Смотрел на Java код. ...много думал.
От: Stoune  
Дата: 08.11.05 03:29
Оценка: -1
Здравствуйте, c-smile, Вы писали:


CS>Вот такой вот показательный пример,


CS>Фрагмент (очень неполный) читает нечто по протоколу superset of http


CS>
... поскипано
CS>

Всё оттого что товарищ курс о структурах данных и алгоритмах не слушал и выше уровня кодера не поднялся, а ещё оттого что с появлением управляемых языков о производительности, оптимизации можно забыть, а с неи и Кнута похоронить.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Смотрел на Java код. ...много думал.
От: Stoune  
Дата: 08.11.05 03:29
Оценка:
Здравствуйте, savaDAN, Вы писали:

CS>>Внимание! я не критикую автора. Я просто хочу обратить внимание

CS>>на то как safe код фактически рушит систему — код работал на клиенте
CS>>и возникла потребность перенсти его на сервер. Сервер не сказать
CS>>чтобы умер — просто перестал "серверить".
DAN>Ага, при этом если бы человек начал писать данный код оптимально, потратив в 2-3 раза времени больше (с учетом отладки и поиска ошибок), то получил бы нагоняй от менеджера за то что занимается gold plating-ом и срывает сроки.

Просто есть разные фирмы с разной политикой найма работником, у Джоэла кстати об этом есть статься. Есть програмисты звёзды, а есть кодеры. И то на что первый потратит 10 минут причём и отладит за это время другой иа день не сделает.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[20]: Смотрел на Java код. ...много думал.
От: CreatorCray  
Дата: 08.11.05 06:20
Оценка:
Здравствуйте, VladD2, Вы писали:

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


CC>>Эээ.. Не знаю насколько я в тему попаду щас, но у меня (правда редко) при чтении форумов вываливается ошибка что то типа "база блаблабла залочена пользователем Admin. Все в сад!" Лечится перезапуском януса. Оно?


VD>Такое сообщение бывает если параллельно запустить Эксес и открыть в нем БД Януса. Вот только это проблемы джета написанного на С++.

Дык нету аксесса. Из офиса стоит только ворд+excel. Все остальное принудительно не ставилось.
Шож ета такие правильные .нет девелоперы да такой неправильный Jet использовали? Почему не .нет-овское что нить? ась?
Re[12]: Смотрел на Java код. ...много думал.
От: Павел Кузнецов  
Дата: 08.11.05 07:01
Оценка: +1
savaDAN,

> мне приходится в документе описывающим архитектуру проекта, или в комментариях к методу или еще где-то писать "уважаемые разработчики! передайте в эту функцию вами выделенный буфер и не забудьте его потом удалить", и далее, никакими средствами кроме code review или долгим дебагированием я ошибку разработчика, нарушившего этого правило не найду.


А ведь можно было вместо этих "приседаний" завести специальный тип указателя, обозначавшего именно эту семантику, и тогда компилятор стоял бы на страже, и комментарии/документация подобного содержания не понадобились бы...
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[13]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 08.11.05 07:24
Оценка:
ПК>А ведь можно было вместо этих "приседаний" завести специальный тип указателя, обозначавшего именно эту семантику, и тогда компилятор стоял бы на страже, и комментарии/документация подобного содержания не понадобились бы...
А давайте вы мне дадите конкретный пример, а я покажу вам как вследствие невнимательности/неопытности разработчика можно допустить ошибку в его использовании, хотя я думаю вы и сами, если используете подобные типы указателей, наверняка с такими ошибками сталкивались.

Да и опять же — этот смарт поинтер надо а) написать, б) объяснить всем как использовать, с) использовать, д) этот указатель будет несовместим с другими типами таких же умных указателей разработанных другими авторами в других библиотеках (от которых у вас и исходников может не быть). Как минимум 4 источника багов, не говоря уже о дополнительных затратах во время разработки проекта.

В общем у меня начинает складываться впечатление, что мы спорим об очевидном, просто ради спора.
Если бы в С++ все было хорошо с управлением памятью никто бы GC не изобретал.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 08.11.05 07:24
Оценка:
DAN>>Ага, при этом если бы человек начал писать данный код оптимально, потратив в 2-3 раза времени больше (с учетом отладки и поиска ошибок), то получил бы нагоняй от менеджера за то что занимается gold plating-ом и срывает сроки.

S>Просто есть разные фирмы с разной политикой найма работником, у Джоэла кстати об этом есть статься. Есть програмисты звёзды, а есть кодеры. И то на что первый потратит 10 минут причём и отладит за это время другой иа день не сделает.

[OFF]
Хм, у меня возникает нехорошее впечатление, что кроме Джоэла на этом форуме больше никто ничего не читает.
Брукс об этом писал за 20 лет до Джоэла, ДеМарко с Листером об этом писали, МкКоннел об этом писал. Лучше бы их в пример привели, чем статьи глубоко уважаемого Джоэла, который по сути колумнист и автор системы багтрекинга.
[/OFF]

Теперь по теме: Забивать гвозди микроскопом, во-первых, очень дорого, во-вторых, неэффективно, в-третьих, микроскоп сломается и уйдет в другую фирму потому как хочет чтобы им микробов смотрели, а не гвозди забивали.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[14]: Смотрел на Java код. ...много думал.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.11.05 07:32
Оценка: 1 (1)
Здравствуйте, savaDAN, Вы писали:

DAN>Если бы в С++ все было хорошо с управлением памятью никто бы GC не изобретал.


Так просто, реплика: GC изобрели и начали использовать задолго до появления C++.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 08.11.05 07:32
Оценка: +2 :)
S>Всё оттого что товарищ курс о структурах данных и алгоритмах не слушал и выше уровня кодера не поднялся, а ещё оттого что с появлением управляемых языков о производительности, оптимизации можно забыть, а с неи и Кнута похоронить.
А вы разве еще не поняли зачем это все? Зачем все эти .NET-ы, GC и прочая? И почему мы перестали писать суперэффективные программы на ассемблере?
А потому что задач много, а хороших программистов мало. И потому что бизнесу надо денег зарабатывать, а не плясать вокруг дорогостоящих гуру. ИМХО основные усилия в ИТ индустрии направлены на то, чтобы как можно менее квалифицированный персонал мог делать как можно больше работы с приемлемым качеством. Да и не только в ИТ к этому стремятся, просто ИТ индустрия молодая, поэтому еще не успела дойти до конвейера.
"мы не разработчики, мы пользователи программного продукта по имени компилятор" (С) к сожалению забыл.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[15]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 08.11.05 07:34
Оценка: +2
DAN>>Если бы в С++ все было хорошо с управлением памятью никто бы GC не изобретал.
E>Так просто, реплика: GC изобрели и начали использовать задолго до появления C++.
Коненчно. My fault.
Исправляюсь:
"Если бы в С++ все было хорошо с управлением памятью, никто бы не тащил GC в mainstream языки типа Java и .NET"
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[21]: Смотрел на Java код. ...много думал.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.11.05 07:34
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

CC>Шож ета такие правильные .нет девелоперы да такой неправильный Jet использовали? Почему не .нет-овское что нить? ась?


N-ный участник форума задает этот вопрос. Тенденция, однако.
Пора на заставке Януса написать: Использован Jet, поскольку .Net-овского аналога пока нет. Ждем-с.

... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Смотрел на Java код. ...много думал.
От: c-smile Канада http://terrainformatica.com
Дата: 08.11.05 07:50
Оценка:
Здравствуйте, savaDAN, Вы писали:

S>>Всё оттого что товарищ курс о структурах данных и алгоритмах не слушал и выше уровня кодера не поднялся, а ещё оттого что с появлением управляемых языков о производительности, оптимизации можно забыть, а с неи и Кнута похоронить.

DAN>А вы разве еще не поняли зачем это все? Зачем все эти .NET-ы, GC и прочая? И почему мы перестали писать суперэффективные программы на ассемблере?
DAN>А потому что задач много, а хороших программистов мало. И потому что бизнесу надо денег зарабатывать, а не плясать вокруг дорогостоящих гуру. ИМХО основные усилия в ИТ индустрии направлены на то, чтобы как можно менее квалифицированный персонал мог делать как можно больше работы с приемлемым качеством. Да и не только в ИТ к этому стремятся, просто ИТ индустрия молодая, поэтому еще не успела дойти до конвейера.


Логика получается какая-то вывернутая: изобретение комбайна было направлено на то чтобы больше менее квалифицированных косарей больше косили...

Может таки лучше чтобы хорошие программисты писали больше и лучшие программы?
Re[4]: Смотрел на Java код. ...много думал.
От: savaDAN  
Дата: 08.11.05 08:00
Оценка: +2
CS>Логика получается какая-то вывернутая: изобретение комбайна было направлено на то чтобы больше менее квалифицированных косарей больше косили...

CS>Может таки лучше чтобы хорошие программисты писали больше и лучшие программы?

некорректное сравнение.
Тоже не самое лучшее, но то что первым пришло в голову:
Древообрабатывающий станок был изобретен для того, чтобы больше менее квалифицированных столяров могли работать с деревом. То, что классные столяры будут делать еще более классные вещи — побочное приятное дополнение. Обществу, грубо говоря, важнее 5 млн. табуреток, чем 1 один стул выполненный как произведение искусства, даже не смотря на то, что у табуретки качество куда ниже.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[7]: Многия знания - многия печали
От: NotGonnaGetUs  
Дата: 08.11.05 13:22
Оценка: :)
CS>там вообще-то еще MS Java жужжит и кстати нормально так жужжит. Если при проектировании считать память ресурсом то все работает.

Сервер на MS Java? Вот это да
Не удивительно, что такие проблемы с созданием временных объёктов.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Смотрел на Java код. ...много думал.
От: NotGonnaGetUs  
Дата: 08.11.05 13:22
Оценка:
CS>Это вот родной код фирмы Sun:

CS>
CS>


CS>Вопрос: означенная фирма до конца ли понимает "назначение управляемых сред"? Как думаешь?


Проблема с Dimension не в том, что "фирма не понимает".
"Просто" был допущен архитектурный просчёт, пока все ещё были молодые и не опытные

Либо нужно было делать Dimension immutable объёктом, либо добавлять везде методы
ака void getPreferredSize(Dimension dest, ...).

Этот момент был упущен, ну а дальше пришлось тащить его из-за необходимости обеспечения обратной совместимости версий

(с) по мотивам "Effective Java. Programming Language Guide" Джошуа Блоха.

CS>ПыСы: Там еще кстати замечательное такое слово synchronized используется. "Для знатоков штучка".


Не скажешь в какой версии jdk ты нашёл этот код? А то я всё перерыл — нет такого
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.