LINUX.ORG.RU

Доверьтесь виртуальной машине


0

0

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

...Код на Java вполне может выполняться быстрее кода на C. ... Ирония в том, что C-программисты гордятся своей возможностью управлять указателями на самом низком уровне, и считают это своим самым мощным инструментом, и эта же самая возможность мешает C-компиляторам производить наиболее эффективно оптимизированный код. Отнимая эту возможность у программиста, вы предоставляете море возможностей для оптимизации компилятору, и будьте уверены, Java-компилятор знает об оптимизации больше, чем 99,99% обычных программистов.

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

...Если бы я мог послать волшебной палочкой сообщение всем разработчикам на Java, я бы сказал им: доверьтесь виртуальной машине. Она умнее, чем вы думаете. Перестаньте пытаться обставить и обогнать ее. Пишите в коде то, что вы хотите, чтобы она сделала и она сделает все возможное и даже чуть больше чтобы то, что вы задумали, выполнилось наиболее быстро."

>>> Подробности

anonymous

Проверено: Pi ()
Ответ на: комментарий от anonymous

>lol Что в жабе нету и аналогов free()? Очистка памяти на совести пользователя?

В IDEA в углу есть такая кнопочка - называется Run Garbage Collector. =)))

anonymous
()
Ответ на: комментарий от anonymous

>Что в жабе нету и аналогов free()?

Ты конечно не поверишь но "аналоги free()" есть в очень малом количестве языков программирования.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Судя по стилю изложения до тебя таки добрались черви-мозгососы?

Я их культивирую.

r ★★★★★
()

>.Код на Java вполне может выполняться быстрее кода на C. ...

теоретически - конечно это так, однако если не закрывать глаза на действительность, то исследования показывают (ссылки легко нарыть), что даже в лучшем случае, паритет возможен при 3х - 4х кратном увеличении потребления памяти для языка с гц (при этом не учитывая спецефичных для жаба вещей, здорово отжирающих память [типа jit, невозможности совместного использования кода в общем случае и т.п.] ). даже при таком раскладе, TLB misses сжирают КУЧУ процессорного времени (потери растут прямо пропорционально объему отожранной рамы), а page faults - просто УБИЙЦА производительности для систем с gc. все это очевидно. специалисты с лора, как и г-н Goetz (ну он то по крайней мере за это получает много американский танга) конечно лукавят, делая вид, что это им неизвестно. плюс ковсему возможность модифицировать код при загрузке - начисто вырубает шаринг нативного (сгенеренного jit-ом) кода, что в системе с нескрлькими запущенными жаба приложениями приводит опять таки к повышеному (в разы по сравнению с тем, если бы код можно было расшарить) потреблению памяти. jit-ить код всякий раз при запуске - дурость и неоправдвнная трата ресурсов - возможность aot-ить начисто вырубается существованием модифицирующих загрузчиков классов.

жаба хорошая технология, однако весь этот геморр приводит к тому, что она очень плохо подходит для создания десктопных приложений. для серверных, где доминирует технология 1-приложение на сервер - вполне подходит. в этом основня причина, по которой жаба успешно живет как платформа для реализации серверных приложений и буксует на десктопе, где доминируют С, С++, Python, Mono ... короче все, что не жаба.

aydef
()

Интересный флейм. Очень много лет тому назад все те же аргументы я видел в спорах asm vs c, и страсти тогда накалялись не меньше чем сейчас. Ну и где теперь этот asm? :)

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

Причины в ограниченной возможности оптимизации для компилируемых языков. Компилятор C++ компилирует программу для некого обобщенного процессора, он ничего не знает о том на каком процессоре программа будет запускаться. Она так же не может знать ничего о том, как программа будет в дальнейшем использоваться.

Виртуальная машина всегда знает на каком процессоре она запущена. Она имеет возможность включить те виды оптимизации, которые дают максимальный эффект именно на этом процессоре. Более того, виртуальная машина знает о том как именно работает программа: для нее ничего не стоит определить те ветки, по которым обычно идет выполнении программы и оптимизировать код с учетом накопленной статистики. Эти виды оптимизации принципиально недоступны традиционным компиляторам.

Многие тут считают Java-программистов людьми у которых не хватило мозгов освоить C++. Я наблюдаю обратную тенденцию: с C++ сейчас работают очень много тех, у кого не хватило мозгов освоить J2EE. Косвенно это подтверждается и зарплатами: сердний Java-программист получает больше среднего C++ программиста.

anonymous
()
Ответ на: комментарий от aydef

При том, что все высказанное разумно - как так получилось, что Mono не касаются вышеизложенные проблемы?;)

svu ★★★★★
()
Ответ на: комментарий от anonymous

>Причины в ограниченной возможности оптимизации для компилируемых языков. Компилятор C++ компилирует программу для некого обобщенного процессора, он ничего не знает о том на каком процессоре программа будет запускаться. Она так же не может знать ничего о том, как программа будет в дальнейшем использоваться.

А гентушнеги на что?

anonymous
()
Ответ на: комментарий от r

>Ты конечно не поверишь но "аналоги free()" есть в очень малом количестве языков программирования.

Слив зачитан. Вот все и узнали: жаба такое говно, что даже память нормально использовать не умеет. Пользователь обязан всякие ключики наугад в жабу пихать, чтобы она память не гигами жрала, со своим дерьмосборщиком. Какой там ей интерпрайз и корпорации? Только поделки ПТУшников, для полуподвальных фирм.

Уверен, та же ситуация и с очковтирательством быстрееЧемНаСи.

anonymous
()
Ответ на: комментарий от anonymous

>Слив зачитан.

Дада - можешь себе засчитать, если ты не знал, что free есть в очень малом числе языков.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Как человек с опытом работы на C, C++ и Java, могу сказать: Java предусматривать НЕДОСТИЖИМУЮ для C и С++ скорость разработки

вы судите по себе. в этом случае вы очевидно правы, хотя это может быть например следствием того, что вы недостаточно хорошо освоили С++. справедливости ради нужно отметить, что жаба на порядок проще С++ для изучения. т.е. непрофессионал в жаба, накодит несомненно больше и быстрее на жаба чем непрофессионал в С++ на С++.

( к стати в этом нет ничего плохого - более того, это основной плюс жаба )

aydef
()
Ответ на: комментарий от anonymous

> Какой там ей интерпрайз и корпорации? Только поделки ПТУшников, для полуподвальных фирм.

Ой, а мужики-то в полуподвальной IBM не знают... И все те компании, которые платят IBM за построение готовых решений. И куча других подвальных, полуподвальных, чердачных и антресольных фирм. И только настоящий правильный ентерпрайз "Анонимус и Анонимус" знает настоящую правду. И использует.. Позвольте, что же он использует?... Наверное, ASP.NET?

svu ★★★★★
()
Ответ на: комментарий от anonymous

>>Тебе купить? Или мама денег даст? Слава Б-гу, времена когда "всем будет достаточно 640кб памяти" прошли. > >Да, а потом подобные "программисты" пишут notepad, которому для работы надо всего-ничего 1 гиг памяти. > >За фразы типа "сейчас память/процессор дешевые", надо увольнять без суда и следствия.

Да всё просто же. На "дешёвых памяти-процессорах" и работа программёра - тоже дешёвая.

anonymous
()
Ответ на: комментарий от gapik

>Java в Windows действительно работает шустрее

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

aydef
()
Ответ на: комментарий от anonymous

>если программа делает что-то хуже, чем человек, то от такой программы нет никакой пользы

Машина должна работать, а человек думать. Но никак не наоборот.

kraw ★★★★
()
Ответ на: комментарий от anonymous

>>Причины в ограниченной возможности оптимизации для компилируемых языков. Компилятор C++ компилирует программу для некого обобщенного процессора, он ничего не знает о том на каком процессоре программа будет запускаться. Она так же не может знать ничего о том, как программа будет в дальнейшем использоваться.

> А гентушнеги на что?

Гентушнки уже научились пересобирать Oracle?

anonymous
()
Ответ на: комментарий от anonymous

>Я наблюдаю обратную тенденцию: с C++ сейчас работают очень много тех, у кого не хватило мозгов освоить J2EE.

какая глупость! освоить j2ee, даже наиболее рейтинговую ее часть ejb (даже 2.3) - значительно проще чем разобраться в том же boost-е.

>Косвенно это подтверждается и зарплатами: сердний Java-программист получает больше среднего C++ программиста.

откровенная дурь. все зависит от наличия специалистов на рынке. стоящиего С++ программиста сегодня найти практически невероятно сложно. например моя контора занимается аутсорсингом и мы работаем и с тем и с другим. у нас С++ программист c с опытом DCOM и Corba получает от 2000$, j2ee от 1500$ (не москва).

aydef
()
Ответ на: комментарий от aydef

> к стати в этом нет ничего плохого - более того, это основной плюс жаба

Почитай того же Джоела на joelonsoftware.com чтоли.

Если кратко - то джава "разжижает мозг" , разработчик от джавы тупеет и превращяется в code-monkey.

anonymous
()
Ответ на: комментарий от anonymous

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

Нет, так же как с не обгонит правильный асм.

>Компилятор C++ компилирует программу для некого обобщенного процессора, он ничего не знает о том на каком процессоре программа будет запускаться.

Можно как оптимизировать критические участки, так включить и не оптимизированную версию и определять при первом запуске, поддерживаются ли эти оптимизации на данном процессоре.

>Очень много лет тому назад все те же аргументы я видел в спорах asm vs c, и страсти тогда накалялись не меньше чем сейчас. Ну и где теперь этот asm?

Нормально написать и отлаживать крупный проект на асм сложно. Преход асм - си действительно был скачком, т.к. си и асм РЕАЛЬНО различаются и си открывает новые возможности. Жаба же синтаксичести кастрированный с++ подобный мутант, по сути ничего нового не несёт, но сильно ограничивает возможности программиста. Как ни старайся из говна конфетку не сделать. Всякие сборщики мусора предназначены и прочие удобные фичи для дураков, и ничего они не облегчают( нормальным людям ес-но). Скоро жаба отправиться в небытьё, следом за всякими дельфи, прихватив за одно .нет и винду.

P.S. Сильный маркетинг у жабы как и у винды, хорошо промывает мозги дуракам. Жабокодеры подобны виндузятникам.

anonymous
()
Ответ на: комментарий от aydef

>у нас С++ программист c с опытом DCOM и Corba получает от 2000$

Это я так полагаю на венде? Потому как для Linux/Unix это число умножается минимум на два. Причем как в зарплате так и в сложности поиска оного :)

anonymous
()
Ответ на: комментарий от anonymous

"Сильный маркетинг хорошо промывает мозги дуракам. Жабокодеры подобны виндузятникам."

Это ж хайку получилась!

anonymous
()
Ответ на: комментарий от svu

>как так получилось, что Mono не касаются вышеизложенные проблемы?;)

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

aydef
()
Ответ на: комментарий от aydef

>т.е. непрофессионал в жаба, накодит несомненно больше и быстрее на жаба чем непрофессионал в С++ на С++.

Смешно. Честно.

r ★★★★★
()
Ответ на: комментарий от r

>т.е. непрофессионал в жаба, накодит несомненно больше и быстрее на жаба >чем непрофессионал в С++ на С++.

Может тебе тогда машинистка нужна а не программер?

anonymous
()
Ответ на: комментарий от aydef

>значительно проще чем разобраться в том же boost-е.

Это наверное потому в нем почти никто не разбирается даже в мире плюсов?:)

r ★★★★★
()
Ответ на: комментарий от r

>Смешно. Честно.

рад что вам понравилось. смех продлевает жизнь.

aydef
()
Ответ на: комментарий от aydef

> в моно есть аот, и есть возможность за аотить всю базовую библиотеку

Всему есть цена. В данном случае - отсутствие такой шикарной вещи, как мощные class loaders.

svu ★★★★★
()
Ответ на: комментарий от svu

>Ой, а мужики-то в полуподвальной IBM не знают...

IBM - сборище корпоративных дегенератов в пиджаках. Достаточно вспомнить как их тупо кинула мс.

>И все те компании, которые платят IBM за построение готовых решений.

И там везде одна жаба????? Прямо так всё и рассказали жабокодеру, что и куда поставляют. Очередная жертва рекламы. Вы не смотрите случаем аналог дома 2??

anonymous
()
Ответ на: комментарий от anonymous

>Полностью согласен. Вон негры-папуасы строят "дома" из говна и глины( в прямом смысле) - быстро, дёшево, не требует навыков.

Т.е. Вы беретесь сделать дом из говна и глины? Я бы, честно говоря, не рискнул :)

anonymous
()
Ответ на: комментарий от anonymous

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

Нормальные люди heap compaction руками делают? А то вот понимаешь ли разработчиков linux kernel заботят такие хрени, как фрагментация памяти и т.д. и они страдают разными buddy-алггоритмами и т.д. А "умному" ононимусу оно все мешает - он как нормальный чел руками все делает. Надо было ему и виртуальную память недавать - он бы страницы сам повытеснял, а то блин намутили механизмов для дураков.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Это я так полагаю на венде? Потому как для Linux/Unix это число умножается минимум на два. Причем как в зарплате так и в сложности поиска оного :)

Обламайся. ЗАйди на любой джобовый сайт и посмотри.

r ★★★★★
()
Ответ на: комментарий от r

>Дада - можешь себе засчитать, если ты не знал, что free есть в очень малом числе языков.

Нет это слив жабы с.

anonymous
()
Ответ на: комментарий от r

>Это я так полагаю на венде? Потому как для Linux/Unix это число >умножается минимум на два. Причем как в зарплате так и в сложности >поиска оного :)

>Обламайся. ЗАйди на любой джобовый сайт и посмотри.

речь шла про нормального программиста , а не с job.ru

anonymous
()
Ответ на: комментарий от anonymous

>И там везде одна жаба????? Прямо так всё и рассказали жабокодеру, что и куда поставляют. Очередная жертва рекламы.

Везде - везде одни враги. Они. Везде.

r ★★★★★
()
Ответ на: комментарий от anonymous

> IBM - сборище корпоративных дегенератов в пиджаках.

Я ж так и сказал - подвальная контора. Только "Анониимус и Анонимус" знают настоящую правду.

> Прямо так всё и рассказали жабокодеру, что и куда поставляют.

Всё - не всё. А вот у заказчика, где я сижу - бок о бок со мной работает команда айбиэмовских консультантов (денег за них выложено немеряно). Жабка - один из их инструментов. И ей-богу, таких ребят в этой конторе дохрена.

svu ★★★★★
()
Ответ на: комментарий от anonymous

>Это я так полагаю на венде?

не только. работаем и виндой и с юниксом (в основном это солярис).

>Потому как для Linux/Unix это число умножается минимум на два. Причем как в зарплате так и в сложности поиска оного :)

практика показывает, что С++ программист, пришедший из виндов, значительно легче и быстрее адаптируется в *nix чем наоборот. вин апи в купе с ком/дком и костыли типа MFC - еще те костыли, а корба - она и в африке корба.

aydef
()
Ответ на: комментарий от anonymous

>речь шла про нормального программиста , а не с job.ru

То есть очередная газификация?

И где у нас статистика зарплат "нормальных" программистов?

r ★★★★★
()
Ответ на: комментарий от r

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

Нормальные программисты - они секретные. Потому что сферические.

svu ★★★★★
()
Ответ на: комментарий от svu

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

Я всегда предполагал что джава нормально работает только с толпой консультантов из сана или ibm (они свою джаву делают если кто не в курсе).Ты мои догадки только что подтвердил :)

anonymous
()
Ответ на: комментарий от anonymous

> Я всегда предполагал что джава нормально работает только с толпой консультантов из сана или ibm (они свою джаву делают если кто не в курсе).Ты мои догадки только что подтвердил :)

Прям нашествие телепатов какое-то на ЛОРе. Где и кто сказал, что жаба работает ТОЛЬКО с толпой консультантов?

svu ★★★★★
()
Ответ на: комментарий от r

>То есть очередная газификация?

Можно и так сказать :)

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

В бухгалтериях sun,ibm,oracle и тд.

Я это написал к тому что нормальных кодеров нельзя найти на *job* сайтах -их можно только переманить с текущей работы.Для этого нужны деньги и хорошие условия работы (см. скрины из офиса гугла).

anonymous
()
Ответ на: комментарий от svu

>Прям нашествие телепатов какое-то на ЛОРе. Где и кто сказал, что жаба работает ТОЛЬКО с толпой консультантов?

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

r ★★★★★
()
Ответ на: комментарий от anonymous

>Я это написал к тому что нормальных кодеров нельзя найти на *job* сайтах -их можно только переманить с текущей работы.

Я не предлагал тебе посмотреть на резюме - я предлагал тебе посмотреть на предложения. Более показательной статистики на сегодняшний день нет.

r ★★★★★
()
Ответ на: комментарий от r

>Нормальные люди heap compaction руками делают? А то вот понимаешь ли разработчиков linux kernel заботят такие хрени, как фрагментация памяти и т.д. и они страдают разными buddy-алггоритмами и т.д. А "умному" ононимусу оно все мешает - он как нормальный чел руками все делает. Надо было ему и виртуальную память недавать - он бы страницы сам повытеснял, а то блин намутили механизмов для дураков.

Стрелки на линкс кернел не переводи. То что в жабе это работает через жопу - факт.

P.S. Жаба мешает не умному anonymous'у, а пользователю. Быдлокодеры забывают, что программы предназначены для пользователя, а не для виртуальной машины, которой они полностью отдались.

anonymous
()
Ответ на: комментарий от svu

>Где и кто сказал, что жаба работает ТОЛЬКО с толпой консультантов?

Работает и хорошо работает - разные вещи. Я писал про вариант "хорошо работает".

З.Ы. А ibm-вские ребята у твоего заказчика вам там чисто для anykey показать нужны да?

anonymous
()
Ответ на: комментарий от svu

>Всему есть цена.

это точно.

>В данном случае - отсутствие такой шикарной вещи, как мощные class loaders.

динамическая загрузка работает и там, а отсутствие МОДИФИЦИРУЮЩИХ КОД загрузчиков, обходится генерацией кода (ну скажем с применением наследования) и компиляцией в рантайме. примерно так, как в спринге реализован АОП для классов не наследованных от интерфейса. только в спринге байткод генерится напрямую, а в нете - исходник + рантайм компиляция ( впрочем байткод там тоже можно генерить ).

aydef
()
Ответ на: комментарий от r

>Я не предлагал тебе посмотреть на резюме - я предлагал тебе посмотреть >на предложения. Более показательной статистики на сегодняшний день нет.

Cтатистики чего? Соотношения быдлокодеров к профессионалам? Дык быдла всегда было больше :)

anonymous
()
Ответ на: комментарий от anonymous

ibm-овские ребята нужны для peace of mind заказчика (ну и еще потому, что кроме жабки используется куча других ибмовских технологий). Никто не сказал, что нельзя найти достаточно квалифицированных жабщиков и без ibm (соббсно, косвенным доказательством тому - мое присутствие в проекте, пардон за нескромность;)

svu ★★★★★
()
Ответ на: комментарий от aydef

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

svu ★★★★★
()
Ответ на: комментарий от anonymous

>З.Ы. А ibm-вские ребята у твоего заказчика вам там чисто для anykey показать нужны да?

Скорее, для очковтиратильства про жабу. Носятся толпами по офису и орут: "ЖАБА, ЖАБА, ЖАБА". В ибм - же одни "корпоративные" дегенераты.

anonymous
()
Ответ на: комментарий от anonymous

>То что в жабе это работает через жопу - факт.

В C++ этого вообще нет - вот где факт. В кернеле ребята этим озабочены потому, что это пример долгоживущего приложения для которого memory fragmentation становится проблемой. Все кто пишет долгоживущие сервера - озабочены этой проблемой. Жабский GC выполняет heap compaction, который снимает проблему. То что ты сказал, что жаба ничего нового не вносит, а только умных людей ограничивает только показало твой уровень. Как про того анонимуса, который крутость технологии наличием free меряет.

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

Быдлокодеры об этом прекрасно знают - можешь не сомневаться. Особенно в области enterprise server side.

r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.