Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет alamar ([info]alamar)
@ 2009-04-26 23:32:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Корейцам надо завести
Бригаду имени Растрелли:

Why do so many East Asian children wear glasses? Because they don’t get enough exposure to sunlight
many East Asian children’s 6-day school and institute schedules deprive them of sleep to levels that would be considered borderline child abuse in Australia
Light skins are very popular among many East Asian women. A 2004 endocrinology study by Severance Hospital in Seoul showed that the nation’s women are seriously deficient in Vitamin D


Решается проблема очень просто?
В неком учебном заведении ученики учатся больше 40 часов в неделю? Заведение немедленно закрывается. На самом деле, надо несколько пидарасничеств расформировать, прежде чем остальные уловят.
Ребенок тратит на учёбу больше 50 часов в неделю? Родители предупреждаются, что ещё один раз их за этим поймают, лишат родительских прав.

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

Кто вдруг будет не согласен, так он говноед и вредитель, давить.


(Добавить комментарий)


[info]kouzdra
2009-04-26 23:44 (ссылка)
Хе-хе - http://lj.rossia.org/users/kouzdra/146061.html?nc=1

PS: Обращу внимание - и тут о детстве пекутся австралийцы :)

(Ответить) (Ветвь дискуссии)


[info]alamar
2009-04-26 23:47 (ссылка)
Это про другое.

Это другая печальная тенденция - лет до 18 человека мариновать, держа в помещении с такими же лузерами и не уча ничему ровным счётом применимому.
Именно то, с чем надо бороться!

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2009-04-26 23:53 (ссылка)
Ну я в 9-10 классе тратил на все эти развлекухи заведомо больше 40 часов в неделю - и скорее всего больше 50. Примерно на 30% добровольно совершенно - ну типа кроме школы - маткружок, химкружок, тусовки вокруг компьютера часов до 9-11 вечера. И как то жив и здоров и imho это совершенно нормально.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2009-04-26 23:56 (ссылка)
Я в 9-10 классе сидел за компьютером, сколько мог, и в гробу видел кружки и квадратики.
Как им в более разных классах.

Сидение за компьютером нельзя считать за часть обучения, если только человек там действительно не делает что-то официально для учёбы.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2009-04-26 23:59 (ссылка)
Я с компьютером в основном программировать учился. Как впрочем на маткружке - математику учил, а на хим- - химию (ну и про бомбы/слезогонку тож).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2009-04-27 00:55 (ссылка)
Учиться программировать не есть учеба в обсуждаемом смысле, потому что ее никто не регламентирует и не принуждает.

По поводу кружков ничего сказать не могу, никогда не пробовал.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2009-04-27 01:02 (ссылка)
Глазки садятся ничуть не меньше. Если садятся.

Но вообще - imho система, в которой в школе надо учиться 30-35 часов (+ домашние задания) и еще часов 20 идет на внеклассные занятия (если хотеть от ребенка конкурентоспособности) - совершенно правильная. Те кто не могут/не хотят - ну пусть идут куда попроще - в ПТУ там или еще как.

В принципе если ввести стандартную норму отчислений из ВУЗов - 30% от поступивших - я думаю все само на свои места станет :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2009-04-27 01:28 (ссылка)
"Глазки садятся ничуть не меньше. Если садятся."
Так это уже выбор конкретного человека!

"imho система, в которой в школе надо учиться 30-35 часов и еще часов 20 идет на внеклассные занятия - совершенно правильная"
А мне кажется, это child abuse.
Я учился втрое меньше приблизительно. Жив. Здоров. Зарабатываю.

Если я на честном ристалище порву 90% выпускников потогонной системы и отряхну руки - будет это считать, что не-красноглазый подход к учёбе имеет право на существование?

"Те кто не могут/не хотят - ну пусть идут куда попроще - в ПТУ там или еще как."
Значит, я должен идти, куда попроще - в ПТУ, там.
Только один нюанс - IT у нас пока не клуб для избранных.
И отслеживать, кто крут, а кто тянет лямку - несложно.
И я говорю, что я с ненапряжным графиком и обучением программированию в свободное время между играми - порву 90% "потогонных" "проффесионалов", а остальные скажут, что меня уважают и претензий не имеют.

Если я, занимаясь делом самостоятельно примерно 5 часов в неделю, достиг того, на что они дрочат 55 часов в неделю под присмотром - с ними что-то deeply wrong. They are fucked!

На самом деле, умные дети, имеющие умных родителей, делают так: идут в экстернат, и там за год проходят два-три года школьной программы.
Заканчивают ненавистную лет в 13! Вот так и надо.
Собственно, наличие экстерната, когда за год обучения без учителей результат, как при трех годах казарменного - лучший показатель, что эти 35+20 часов вы занимаетесь ну чем-то совсем не тем!

"В принципе если ввести стандартную норму отчислений из ВУЗов - 30% от поступивших - я думаю все само на свои места станет :)"
У нас примерно так и было.
Только как-то так получилось, что отчисляли исключительно людей талантливых и интересных.
Исключили барабанщика Камшилина. Исключили душу группы, КВНщика Серебрякова (вроде он потом куда-то восстановился). Исключили МТГшника, не помню, какую фамилию носившего. Исключали Ворона, инженера/менеджера в AMD. Два раза. Исключали меня.
При этом гораздо более блёклые личности - не буду называть фамилии - которые вообще я не пойму, что делали в этом институте - успешно и невозбранно на тройках-четвёрках доползли до финишной прямой невозбранно.
Ну и плюс команда прилизанных хорошистов в галстучках.

Исключали людей, которым было, чем заняться, помимо официозной учёбы!
Если тебе нравится это, я вынужден спросить: Ты из какой бригады - из блёклых, или из прилизанных?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2009-04-27 01:36 (ссылка)
Если я на честном ристалище порву 90% выпускников потогонной системы и отряхну руки - будет это считать, что не-красноглазый подход к учёбе имеет право на существование?

Это значит только то, что эти 90% учились в плохой школе. Ну не секрет.

На самом деле, умные дети, имеющие умных родителей, делают так: идут в экстернат, и там за год проходят два-три года школьной программы.
Заканчивают ненавистную лет в 13! Вот так и надо.


Только при этом еще надо очень много работать, чтобы эти три года использовать.

Если тебе нравится это, я вынужден спросить: Ты из какой бригады - из блёклых, или из прилизанных?

Меня этот вопрос не очень волнует - но точно не в вашей бригаде.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2009-04-27 01:46 (ссылка)
"Это значит только то, что эти 90% учились в плохой школе. Ну не секрет."
Так я в жизни не видел хорошей школы!
Для меня хорошая школа - это как передовики производства или современное искусство.
Вроде бы они существуют, кто-то их даже видел, но никакого наблюдаемого влияния их якобы-существование на меня не оказывает.

"Только при этом еще надо очень много работать, чтобы эти три года использовать."
Это подразумевается.
Но заметь, экономятся несколько лет! Великая ценность.
Без особых жертв.

"Меня этот вопрос не очень волнует - но точно не в вашей бригаде."
То есть, компания из двух хороших инженеров, КВНщика и музыканта тебя не устраивает.
Вопрос: какая устраивает?
Красноглазиков-математиков из "хорошей школы"? Вы там самые умные - вам это кто-то сказал, или вы сами до этого додумались?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Скажу гадость:
[info]kouzdra
2009-04-27 15:46 (ссылка)
Видите ли - по недавнему треду я вполне понял ваш тип - вы довольно обычный представитель амбициозной серости с жуткой кашей в голове (на профессиональные темы) и немеряным апломбом.

Который не учился в школе, не учился в институте и не хочет (да и наверное не может) учиться сейчас. И не знает и не хочет знать элементарные вещи из своей профессии. Но с немеряными понтами. "Дите-индиго-переросток".

Простите за грубость.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 15:57 (ссылка)
PS: И да - ни в КВН-щике, ни в музыканте я ничего для себя ценного не вижу. Насчет качества инженеров не скажу - но "инженер/менеджер в AMD" для меня как-то не звучит гордо. Да и ничего особенно о человеке не говорит.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 16:16 (ссылка)
Это плохо, что не видишь - ты обречён быть окружённым скучными, однобокими людьми.

Ещё и дрочившими по 10 часов в день вместо детства и юношества.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 22:28 (ссылка)
Меня устраивает мое окружение.

(Ответить) (Уровень выше)

Re: Скажу гадость:
[info]alamar
2009-04-27 16:02 (ссылка)
Я вам ещё раз скажу: недооценивать собеседника - лучший способ рано или поздно сесть в лужу.

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

Да, и если я - серая бездарность, то хотелось бы увидеть результаты вашего творчества. Судя по уровню вашего апломба, вы должны стоять у истоков по крайней мере X11.
Если же выяснится, что никаких видимых признаков вашей цветастой одарённости извне не наблюдается, а основное отличие в том, что ваши посты и комментарии вам нравятся, а мои - не нравятся...
То я опущу занавес над этой сценой из милосердия.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 16:08 (ссылка)
Ваше от меня отличие в том, что, как быстро выяснилось в тот раз, Вы либо не способны (либо не сочли нужным) разобраться в вопросах, которые вполне исчерпывающим образом описаны в документации по С#. Умение читать документацию - минимальное умение, требуемое для программиста.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 16:19 (ссылка)
Я разобрался в вопросе и постановил, что в наших предпосылках мы оба были неправы.

Привёл аргументы, даже таблицу начертил.

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

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 18:02 (ссылка)
Я действительно не вижу причин обсуждать это с Вами. За полной бессмысленностью. Я сейчас о другом - человек, сообщающий, что он не может постичь "смысл ключевых слов ref и out" (и при этом утверждающий, что он это пытался сделать), и не понимающий, чем struct отличается от class в С# либо не умеет читать документацию (насколько я могу судить, по причине отсутствия необходимого для этого базвого набора знаний), либо просто занимается троллингом.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 18:37 (ссылка)
"Я действительно не вижу причин обсуждать это с Вами."
Вы уже десятый раз проскакали 40 миль, чтобы сказать мне, как я вам безразличен. Это не плохо, я сам так делаю, но факт.

'человек, сообщающий, что он не может постичь "смысл ключевых слов ref и out"'
А ты вычитал в книжке набор слов, запомнил его!
Проблема в том, что мне больше интересно, насколько этот набор слов отражает происходящее в реальной жизни.
Так вот выяснилось, что твой набор слов не отражает происходящего. Происходящее гораздо лучше отражает другой набор слов, который был в книжке по соседству, но ты не дочитал; или, может быть, в книжке его и не было, потому что забыли написать.
В любом случае, если мне кажется, что в жизни одно, а в словах другое - я полезу спорить и буду выяснять, что не так; количество книжек, где написан тот набор слов, меня при этом не сильно беспокоит.

Вон в каком количестве книжек написано, что Бог есть; а его же при этом нет.

"и не понимающий, чем struct отличается от class в С#"
Я никогда не говорил, что не понимаю, чем struct отличается от class; так что это надо доказывать (гипотетическому арбитру, а не себе), чего ты не сделал.
Так вот, я говорил, что а) struct не нужен; и б) если struct всё же нужен, он (его поведение) реализуется на базе JVM-классов и небольшого количества синтаксиса.

по поводу а) были подтверждения: я не могу найти хорошее, кину проходное:

1. забыть про struct. Как правило структуры всегда применяют неправильно

Потому что YAGNI нарушают.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 22:27 (ссылка)
если struct всё же нужен, он (его поведение) реализуется на базе JVM-классов и небольшого количества синтаксиса

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

1. забыть про struct. Как правило структуры всегда применяют неправильно Потому что YAGNI нарушают.

coding standard бывают разные. От приличного программиста требуется работать с тем, который принят в проекте, а не демагогия по поводу того, как все круто будет, если все будут смотреть ему в рот и выполнять его советы. Это опять же - профессиональный минимум.

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

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

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 22:33 (ссылка)
"Вы говорили, что можно сделать текстовую замену одного на другое."
А вы это восприняли близко к сердцу? Всё, больше не буду в разговоре с вами шутить, не в коня корм.

"От приличного программиста требуется работать с тем, который принят в проекте"
Не взрывайте мне мозг, мы говорим не о том, что у кого-то принято или не принято, а о том, нужен ли им этот struct? По большому счёту?
Писать же на C# мне и в глючном сне в голову не придёт...

"А "яркие личности" пусть ищут себе место, где их "яркость" кому-то нужна."

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

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 22:41 (ссылка)
Не взрывайте мне мозг, мы говорим не о том, что у кого-то принято или не принято, а о том, нужен ли им этот struct? По большому счёту?

Нужен. Точнее - весьма полезен. Но вам это объяснять бесполезно.

Писать же на C# мне и в глючном сне в голову не придёт...

Почему нет? Язык как язык. Довольно неплохой. Пристрастия пристрастиями - а уметь писать надо на любом языке. Опять же - вопрос минимального профессионализма.

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

Я, пожалуй, задам встречный вопрос. Потом, так и быть - в некоторых аспектах удовлетворю любопытство.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 23:26 (ссылка)
"Нужен. Точнее - весьма полезен. Но вам это объяснять бесполезно."
А вы пробовали?
Может быть, если начать использовать в дискуссии аргументы, она вдруг преобразится?
Потому что сегодня я их от вас ещё не видел.

Зачем нужен struct в C#? Допустим, что для статического отлова нулябельности у нас есть [Nullable] и [NotNull].

"Пристрастия пристрастиями - а уметь писать надо на любом языке"
Я могу.
Однако это не значит, что я не буду иметь своего мнения по поводу полезности тех или иных фич. Ну и тем более - соблюдения тех или иных гайдлайнов.

"Я, пожалуй, задам встречный вопрос."
Я всего лишь скромный труженик рисовых полей.
В одно лицо пишу и поддерживаю CMS http://uw.ru/
На гигантизм вклада не претендую, тем более - на его заметность извне, а посему стараюсь не обвинять собеседников в незнании основ, не высказывать сужления об их вменяемости и вообще вести себя тихо и вежливо (пока не достанут).

А вот мои оппоненты обычно ведут себя так, будто они помесь между Ричи и Кнутом. Посему и хочется узнать, чем подпёрты громкие обвинения и категоричные суждения.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 23:41 (ссылка)
Может быть, если начать использовать в дискуссии аргументы, она вдруг преобразится?

Я уже пробовал - no effect.

Потому что сегодня я их от вас ещё не видел.

Ну сегодня их по этой части и не было - бо научен горьким опытом.

Зачем нужен struct в C#?

Затем, например, что его правильное использование способно снизить ресурсоемкость программы в несколько раз. Как по памяти, так и по CPU.

На гигантизм вклада не претендую, тем более - на его заметность извне

Ну вот одно из моих упражнений (исполненных лет 15 назад в авральом порядке меньше чем за год) - оставившее, пожалуй, наиболее заметный публичный след - почему и привожу (фидошная эха, на удивление до сих пор отличается какой-то активностью).

(Статья в вики - сразу говорю довольно лажовая, но я принципиально не вмешиваюсь в публичную жизнь этого поделия).

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-27 23:52 (ссылка)
"Я уже пробовал - no effect."
Ну прости. Если ты приводишь неубедительные доводы, то меня они и не убеждают.
Но интересно не это, а то, что меня ты в принципе не читаешь.
Ты делаешь pattern-match по моему тексту, находишь там какие-то словосочетания и отвечаешь на них, а вот когнитивной деятельности по осмыслению написанного я не замечал уж давно.

"Затем, например, что его правильное использование способно снизить ресурсоемкость программы в несколько раз. Как по памяти, так и по CPU."
Это за счёт чего это?
То есть я согласен, что может быть практическая разница между производительностью решения на JVM и решения со struct на CLR в каких-то случаях.
Но принципиальной, сермяжной и неодолимой разнице откуда взяться?

Паскаль. Ужасно! Но это многое объясняет.

А посвежее достижения есть?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-27 23:56 (ссылка)
Паскаль. Ужасно!

Возможно - но я последний раз к нему лет 10 назад прикался и то эпизодически - а оно все еще как-то живет. Самому странно :)

А посвежее достижения есть?

Ну из публичных - на сайте JetBrains в списке плагинов есть плагин под С/C++. То, собственно, чем я занимаюсь. Ну а work for hire - извините - работа есть работа.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 00:02 (ссылка)
Слушайслушай, аа зачемзачем тыты всевсе комментыкомменты добавляешьдобавляешь попо двадва разараза?

О, JetBrains - это большой и жирный плюс. Уже внушает.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 00:08 (ссылка)
Гм. А чего "внушает"? Я одно время у них работал. И с парой отцов-основателей знаком еще с университетских времен. Потом правда разосрался на почве как раз их любви к "ярким индвидуальностям" и вообще - блесткам. Совершенно не мое. Фирма милая - но google-style.

Но пара видимых невооруженным глазом моих следов в идее и сейчас есть - emacs-style completions и splitter'ы. Ну и там какое-то количество баг-фиксов в содержательной функциональности и мелких фич. Сейчас уже в деталях и не помню.

(Ответить) (Уровень выше)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 00:17 (ссылка)
Это за счёт чего это? То есть я согласен, что может быть практическая разница между производительностью решения на JVM и решения со struct на CLR в каких-то случаях.
Но принципиальной, сермяжной и неодолимой разнице откуда взяться?


3-4 раза - вполне достаточно. Я уже приводил пример - если надо вернуть пару целых на C# - возвращается 8 байт, лежахих на стеке (то есть не напрягающих GC).

Если тоже самое делается на Java - возвращается класс: Если не пользоваться generic - то class IntPair { int fst, snd; }
- то есть - теже 8 байт, служеное слово при объекте (4 b) и указатель - то есть - 12 байт в куче (самое меньшее), которые придется убирать GC, и копирование 16 байт.

Если используется generic - то каждый из Int'ов превращается в ссылку на 8-байтовый объект - то есть + еще 16 байт в куче.

Ну и при использовании значения - беготня по всем этим ссылкам.

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

В JVM на эту тему навернуто много супергениального - но оно в лучшем случае вытягивает до приемлемой эффективности простые случаи.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 00:37 (ссылка)
"3-4 раза - вполне достаточно. Я уже приводил пример - если надо вернуть пару целых на C# - возвращается 8 байт, лежахих на стеке (то есть не напрягающих GC)."
Ты мерял, или это гипотетически?
Может быть, есть какой-то приближенный к боевым алгоритм, где такую разницу можно посмотреть?

"- то есть - теже 8 байт, служеное слово при объекте (4 b) и указатель - то есть - 12 байт в куче (самое меньшее), которые придется убирать GC, и копирование 16 байт."
GC вовсе не напрягается на временные объекты, насколько я знаю.
Напротив, они просто переиспользуются тут же.

"В JVM на эту тему навернуто много супергениального - но оно в лучшем случае вытягивает до приемлемой эффективности простые случаи."
А мне кажется, оно вполне себе вытащит все случаи. Если не уже.
И тогда structы будут в чистом виде premature optimization, намертво вделанной в язык...

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 00:53 (ссылка)
Ты мерял, или это гипотетически?

Еще хуже - я знаю, как оно устроено.

Может быть, есть какой-то приближенный к боевым алгоритм, где такую разницу можно посмотреть?

Если очень хочется - могу написать тест. Хотя у меня сейчас винда в глубоком загоне и это не очень просто. Но в той же идее массивы маркеров и т.п. в наиболее актуальных случаях делались не массивом классов, а n-кой параллельных массивов int-ов - именно потому, что так много эффективнее.

GC вовсе не напрягается на временные объекты, насколько я знаю.

В простых случаях JIT это дело оптимизирует. В остальных - есть два варианта - мусор соберется за цикл minor GC - это оверхед, но не очень большой, и плохой случай - когда это успеет уйти в старшие поколения - там уже по полной программе. Но в любом почти случае это не ноль.

А мне кажется, оно вполне себе вытащит все случаи. Если не уже.

Не вытащит - теоретически даже не может - ибо алгоритмически полная задача. Можно только самые типичные и массовые паттерны заоптимизить. И то - не всегда.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 01:00 (ссылка)
"Еще хуже - я знаю, как оно устроено."
Это очень хорошо, но я бы взял цифрами.

"Но в той же идее массивы маркеров и т.п. в наиболее актуальных случаях делались не массивом классов, а n-кой параллельных массивов int-ов - именно потому, что так много эффективнее."
Да, видели мы это "много эффективнее"
Авторам Xalan-DTM пришла в голову отличная идея: а давайте-ка мы рёбра графа документа будем хранить в виде массивов интов!
В результате на 40000 элементов этот массив занимает несколько десятков мегабайт в памяти.
И тут вступает другая особенность - для thread safety они делают по экземпляру DTM на каждый поток, причём создавая его из DOM-дерева каждый раз с нуля.

В результате медленно и кушает очень много памяти, квадратично к количеству элементов и линейно к количеству worker-потоков.
Оптимизации - они такие.

"Если очень хочется - могу написать тест."
Я уверен, что всё украдено до нас.
Хотя если у тебя лично не встречалось в практике примеров, когда использование struct дало массивный прирост, то не имеет смысл сейчас это высасывать из пальца.

"Можно только самые типичные и массовые паттерны заоптимизить."
А более сложные действительно придётся промоделировать массивами.
Но мне действительно интересно, есть ли реальная разница и велика ли она.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 01:06 (ссылка)
Да я о другом - что массив из пары интов можно в большинстве случаев заменить без потери функциональности на пару массивов из интов.

Вся разница - вместо a [i].fst придется писать a.fst [i].

А памяти это сожрет в два раза меньше (а если с Pair
[Error: Irreparable invalid markup ('<integer,>') in entry. Owner must fix manually. Raw contents below.]

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

Вся разница - вместо a [i].fst придется писать a.fst [i].

А памяти это сожрет в два раза меньше (а если с Pair<Integer, Integer> - то и в 3-4).

Ну нарисую сейчас тест. Бо время позднее и делать нечего.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 01:30 (ссылка)
"Да я о другом - что массив из пары интов можно в большинстве случаев заменить без потери функциональности на пару массивов из интов."
Да, я понял.
Именно тривиальность подобных операций не позволяет мне пока придумать ситуацию, когда structы будут вот так уж прям и необходимы.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 01:36 (ссылка)
да ситуация простая - любая библиотечная функция, которая не очень хочет озабочивать автора подобными деталями реализации. Что до обезанного теста - вот он:

import com.sun.management.GcInfo;
import com.intellij.openapi.util.Pair;

public class Main {

    public final static int N = 1000000;

    public static void main(String[] args) {
        test_1();
        test_2();
        test_3();
    }

    private static void test_1() {
        print_mem();
        int a [] = new int [N];
        int b [] = new int [N];
        for (int i = 0; i != N; ++ i) { a [i] = i; b [i] = i; }
        print_mem();
        System.out.println(" a [0]=" + a [0]);
        System.out.println(" b [0]=" +  b [0]);
    }

    static class IntP {
        int a, b;
        IntP(int a, int b) {
            this.a = a;
            this.b = b;
        }
    }

    private static void test_2() {
        print_mem();

        IntP v [] = new IntP [N];
        for (int i = 0; i != N; ++ i) v [i] = new IntP(i, i);
        print_mem();
        System.out.println(" a [0]=" + v[0].a);
        System.out.println(" b [0]=" + v[0].b);
    }

    private static void test_3() {
        print_mem();

        Pair<Integer, Integer> v [] = new Pair[N];
        for (int i = 0; i != N; ++ i) v [i] = new Pair<Integer, Integer>(i, i);
        print_mem();
        System.out.println(" a [0]=" + v[0].first);
        System.out.println(" b [0]=" + v[0].second);
    }

    private static void print_mem() {
        System.gc ();
        Runtime s_runtime = Runtime.getRuntime ();
        final long Used_memory = s_runtime.totalMemory () - s_runtime.freeMemory ();
        System.out.println("Used_memory before = " + Used_memory);
    }
}


Результат:

Used_memory before = 235408
Used_memory before = 8219088
a [0]=0
b [0]=0
Used_memory before = 219056
Used_memory before = 20219136
a [0]=0
b [0]=0
Used_memory before = 219120
Used_memory before = 52221792
a [0]=0
b [0]=0

(отмечу еще что в третьем варианте массив из пар пришлось делать unsafe - по другому никак).

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 01:39 (ссылка)
Хотелось бы конкретную задачу, где это проявляется, а не синтетический бенчмарк.

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

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 03:08 (ссылка)
вы уже ведь расписали, сколько байт куда уходит

Поскольку тут у нас уже сплошное недоверие и прочие "докажите..." - чего бы мне не доказать то, что доказать совсем уж несложно :)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 13:15 (ссылка)
Я не сомневался в том, что вы знаете sizeof разных штуковин в CLR/JVM :)
До такой степени я в вас верю.

(Ответить) (Уровень выше)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 01:41 (ссылка)
Они не необходимы - они позволяют скомпенсировать тупость автоматических машинок по компиляции. Но при трансляции в неимеющую их аналогов JVM они из выигрыша превращаются в проблему - пользы от них тут никакой - зато проблем много - например вполне вероятно достаточное копирование ссылок превращается в куда более затратное копирование объектов. Просто потому, что компилятор в общем случае не сумеет однозначно разобраться, что эта оптимизация корректна - а тут алгоритм возможен только сугубо параноидальный - если не 100% уверенности в корректности оптимизации - она не делается.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 01:45 (ссылка)
В том, что лучше не иметь structов, чем их эмулировать объектами, я не сомневаюсь - я сразу сказал.


Но мне кажется, что их не стоит иметь вообще.
А если иметь, то не так, как оно сейчас - совершенно по рандому какие-то вещи являются структурами, какие-то классами. Лучший способ окончательно сконфузить и так не блещущих рацио виндузятников.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-28 02:00 (ссылка)
А если иметь, то не так, как оно сейчас - совершенно по рандому какие-то вещи являются структурами, какие-то классами. Лучший способ окончательно сконфузить и так не блещущих рацио виндузятников

Это с одной стороны верно - простые языки лучше сложных, а главное достоинство Жабы как промышленного языка - ее значителная пуленепробиваемость для тупых юзеров. К программам на С++ тех же людей подпускать куда более стремно.

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

А от этих либ сильно зависит как будет работать то, что будут потом писать с их использованием "виндузятники".

Академический пример - Clean делал и делает по эффективности Haskell, как бык овцу - просто потому что в нем есть возможность в описании функций задать кучу хинтов. В стандартных библиотеках эти хинты аккуратно проставлены - и результат налицо. Потому что 90% времени идет на системные вызовы. И при том, что разница между Clean и Haskell в основном косметическая.

Просто демонстрация, что "это может работать на порядок быстрее". Так-то Clean продукт сырой и полузаброшенный.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-28 13:14 (ссылка)
"С другой стороны - есть такая вещь, как вылизанные профессиональные библиотеки (публичные, как STL, или корпоративные - не так важно). Их пишут люди, у которых проблем с языком нет."
Да, тогда объясни, почему и из каких соображений в CLR DateTime - struct.
Что в нём такого магического, что он не class?
По каким критериям они определяли, что будет struct, а что class?
Как предлагается это проделывать пользователям языка?

"А от этих либ сильно зависит как будет работать то, что будут потом писать с их использованием "виндузятники"."
Я вот не вижу, на каком этапе крайне пригодятся structы в цепочке приём HTTP-запроса - роутинг - controller - view (отдача страницы через Writer).
То есть, чем они ускорят отдачу html-страничек - задача для жабы номер один.
На каком? Если ничем, то в жабе они и не нужны.
Если чем-то ускорят, надо смотреть, насколько.

"Clean делал и делает по эффективности Haskell, как бык овцу - просто потому что в нем есть возможность в описании функций задать кучу хинтов. В стандартных библиотеках эти хинты аккуратно проставлены - и результат налицо."
Я читал исходники Prelude у Haskell (GHC).
Там хинт на хинте и хинтом погоняет, каждая основная функция имеет два варианта - один объясняет принцип, а другой длинный, непонятный и оптимизированный.
Так что разница никак не только в использовании хинтов.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-30 04:03 (ссылка)
По каким критериям они определяли, что будет struct, а что class?

В данном случае, думаю потому, что структура mutable - а потому коирование неибежно. Копирование struct дешевле.

То есть, чем они ускорят отдачу html-страничек - задача для жабы номер один.

Это никак не может быть задачей номер один для жабы - жаба в строковой обработке вполне эффективный язык, а больше ничего для "отдачи html-страничек" не надо. Это не от жабы зависит. А если это зависит от нее - программа дерьмо. Хотя я вполне могу представить, как struct'ы в конкретной программе и при грамотном использовнии могут снизить нагрузку в разы.

Я читал исходники Prelude у Haskell (GHC).
Там хинт на хинте и хинтом погоняет, каждая основная функция имеет два варианта - один объясняет принцип, а другой длинный, непонятный и оптимизированный.
Так что разница никак не только в использовании хинтов.


Это не хинты. Хинты - как раз то, что вроде и на семанитику не влияает - а вот скорость работы от них может менятья в разы.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-30 12:10 (ссылка)
"В данном случае, думаю потому, что структура mutable - а потому коирование неибежно."
Крайне спорное утверждение, потому что mutable - половина классов, ты же не предлагаешь их все сделать структурами?
Кроме того, вот у меня в коде много манипуляций с датами и куда как меньше копирования. Если бы я его тупо переписал на C#, я получил бы как раз поражение в производительности.

"Это никак не может быть задачей номер один для жабы"
Я имею в виду, что отдача html-страничек - задача номер один для жабы, сама по себе.

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

"Хинты - как раз то, что вроде и на семанитику не влияает"
Мне кажется, ты злоупотребляешь словом семантика.
Десять разных функций с разными телами, но одинаковым поведением на семантику тоже не влияют.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]kouzdra
2009-04-30 12:18 (ссылка)
Крайне спорное утверждение, потому что mutable - половина классов, ты же не предлагаешь их все сделать структурами?

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

что отдача html-страничек - задача номер один для жабы, сама по себе.

Это не так - Жаба - в первую очедерь просто язык программирования. С определенной нишей ("кобольской" в основном) - но ниша эта никак не "отдача html-страничек". Отдача html-страничек для нее маргинальная.

Десять разных функций с разными телами, но одинаковым поведением на семантику тоже не влияют.

В общем - да, но hint'ы clean касаются тех вещей, которые модификацией тела функции не делаются. Кроме того (что главное) - hint'ы можно просто убрать, без изменения семантики, а вот 10 разных тел просто так убрать не получится.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Скажу гадость:
[info]alamar
2009-04-30 12:43 (ссылка)
"Если их собирается (или хотя бы может) мутировать пользователь - создание нового экземпляра - печальная необходимость."
У меня вот в системе нет существенных объемов копирования объектов.
Если не считать копирования коллекций, но понятно, что коллекциям structность никак не поможет.
Что я делаю не так?

"С определенной нишей ("кобольской" в основном)"
И зачем в ней, скажем, structы?
На 0.00001 секунду (и с вдесятеро большей вероятностью написать неправильный код) быстрее обрабатывать транзакцию на 100$?

(Ответить) (Уровень выше)


[info]alamar
2009-04-27 01:35 (ссылка)
Да, выжили из другой группы поэта и умнейшего человека Бальюри.
Он к нам пришёл.

(Ответить) (Уровень выше)