LINUX.ORG.RU

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


0

0

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

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

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

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

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

anonymous

Проверено: Pi ()

Ответ на: комментарий от troorl

>Мне больше нравится Qt

ТАм не надо тянуть целую QtRE?:)

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

>я ни за что не поверю что лор работает с использованием j2ee -только голый томкат +бд

А ты вообще знаешь что такое J2EE?

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

>Народ, а как снизить потребление памяти в азуреусе?

Искейпами закрыть все вкладки и свернуть в трей. Сколько будет жрать? Метров 100, я думаю. А что ты хочешь при 99 раздачах, к каждой из которых нужно держать в памяти адреса присосавшихся пиров?

Попробуй те же раздачи через мюторрент раздавать, доложишь нам, сколько он памяти сожрет. Это даже интересно.

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

>Для расширения кругозора, рекомендую ознакомиться с Prevayler.

Ага - но только для расширения кругозора.

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

>Про то что для любого j2ee надо тащить jdk который ~200 мегов в курсе?

Ты даже не представляешь как некомпетентно смешно звучит твоя фраза:))

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

>Еще раз для совсем одаренных: компилятор для c++/c кардинально отличается от jdk хотя бы в том что его никогда не приходится ложить в комплект с программой

Это потому что программы на C++ не занимаются кодогенерацией на лету и им не приходиться ничего компилить. А ты думал зачем он там?

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

>Во. О чем я и говрю. Дотстоевского не читал, но...

А вы компьютер только дома видите? На Украине компьютер - это редкость?

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

>Вообще, единственное, что на текущий момент я бы отнёс к преимуществам Java - то, что для неё проще писать IDE с рефакторингом. И то, это проблема конкретных IDE, а не языка.

Ну нет. На дельфях ты не сможешь реализовать корректную поддержку рефакторинга из-за ограничений паскакаля. На C/C++ так же.

>Всех, кто предлагает тормоза прог решать обновлением железо сажать за мой сервак (Celeron 466MHz, 64M RAM, 2Gb HDD) до полного выздоровления

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

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

>Про то что для любого j2ee надо тащить jdk который ~200 мегов в курсе?

>Ты даже не представляешь как некомпетентно смешно звучит твоя фраза:))

Для любого приложения на языке java с использованием технологий j2ee (jmx, ejb and so on) необходимо использовать Java Development Kit а не Java Runtime Environment. Так понятнее? Или мне по буквам расжевать о дите корпораций ?

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

>Это потому что программы на C++ не занимаются кодогенерацией на лету и >им не приходиться ничего компилить. А ты думал зачем он там?

Знаешь ,если у меня вдруг оторвется рука или нога я все же поползу к доктору а не буду пытаться вырастить новую руку из клетки :)

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

>Это потому что программы на C++ не занимаются кодогенерацией на лету и им не приходиться ничего компилить.

Будем знать, в C компиляция не нужна. Пошёл сносить компилятор.

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

>Ну нет. На дельфях ты не сможешь реализовать корректную поддержку >рефакторинга из-за ограничений паскакаля. На C/C++ так же.

Афтар пеши исчо!

З.Ы. Рефакторинг нельзя реализовать только в случае отсутствия мозга у программиста :)

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

>Все кто живет на допотопном железе скоро будут программы для своих >нужд писать сами.

Скажи это отрасли промышленного железа - в космос до сих пор 286ые летают и АЭС держат :)

Это не говоря уже о военном применении где новомодные хеоны появятся лет через 10 не меньше.

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

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

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

> Что происходит при выходе за границы массива в плюсах? А зачастую
> ничего, продолжение выполнения.
Хреновастый был у тебя опыт работы с плюсами. Видимо во времена DOS'а. Так там и плюсы еще были без шаблонов...

> А не по той ли же причине под оффтопиком шарп так вытесняет плюсы в
> десктопных приложениях?
Шарп вытесняет не плюсы, а Java, VB, Delphi :). Точнее уже даже никто никого не вытесняет. У плюсов своя ниша и шарпу туда ну никак не влезть. К тому же шарп благодаря многочисленым интерфейсам интеграции с другими языками становится тем же чем в unix из покон веков был tcl или bash - просто потому что в windows такого слоя никогда не было.


> Никто не думал над вопросом - почему сейчас очень редко используют
> goto?
Почему же редко? Используют некоторые... идиотики.

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

> На дельфях ты не сможешь реализовать корректную поддержку рефакторинга из-за ограничений паскакаля. На C/C++ так же.

Ааафигеть. И что это за ограничения такие?

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

>Шарп вытесняет не плюсы, а Java, VB, Delphi :).

Ага да старая сказка :) Вот только при выборе средств разработки под венду выбирается либо джава либо шарп. С++ быдлокодеры как не осиливали так и не осиливают.

> Точнее уже даже никто никого не вытесняет. У плюсов своя ниша и шарпу >туда ну никак не влезть.

Замена дельфе для идиотов

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

> На дельфях ты не сможешь реализовать корректную поддержку >рефакторинга из-за ограничений паскакаля. На C/C++ так же.

>Ааафигеть. И что это за ограничения такие?

IFDEFы в ДНК :)

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

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

Потому что все прочие не проходят по критерию цена/время. А ты думал чего пых рулит? Потому что студенты забесплатна могут родить побыстрому криворукого монстра - и покупателю нравится - он монстров классифицировать не умеет.

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

>А если нормально отвечать, то STL, boost, умные указатели, фреймворки также имеются с частичным управлением памяти, как например Qt.

Вово:) при чем этих бегемотов море и каждый использует любимых:)

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

>Все что скрывает железо от программера - ацтой! Всем быро учить pure assembler!

Для какого процессора? У меня жесткое впечатление, что все кто ляпает про ассемблер в смысле языков программирования нихрена кроме 86 процессора и асссемблера к нему не видели, а то бы у них язык не повернулся.

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

> Нужно либо делать работу хорошо, либо не браться за нее.

Он мне это рассказывает (С) Индусам расскажи :)

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

Через некоторое время, приходит к тебе тот же заказчик и говорит: "Хочу еще вот такую маленькую фичу". Ты, прикидывая как это сделать по уму да по совести, говоришь "x времени и, соответственно, X денег", хотя существует вариант какого-то хака/подпорки за "y времени и, соответственно, Y денег". Разница между X и Y, как водится - порядок (причем настоящий, десятичный, а не двоичный).

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

Отказаться сразу? Вряд ли. Согласиться сразу? Совесть не позволяет, да и с некоторого времени - опыт (несколько хаков сделанных подряд, загоняют в #опу любой самый идеальный код, проверено в молодости). Что происходит? Правильно! Начинаются торги. А там уже все зависит от мастерства высоких договаривающихся сторон. Я знаю что есть компании, в которых в корпоративную культуру заложено "право вето" - когда команда, имеет право отсрочить выпуск продукта/релиза, если считает его недостаточно качественным. Но их очень и очень мало.

Если ты работаешь в такой компании, и тебе ни разу не приходилось идти на уступки, то я тебе по белому завидую :)

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

>Скажи ему правильный -Xmx параметр.

Это чтобы лицезреть java.lang.OutOfMemoryException после n-ного времени работы программы ?

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

>Даже hello, world на jave выполняется примерно в 100 раз медленней чем на Си... Проверено.

"Шарик ты балбес". ЧЕм мерял? time'ом?

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

>_Да, жаба для дураков._ Есть такая странная общая тенденция: человек, который добился мало чего, имеет высокое самомнение. Человек, который действительно знает много, наоборот, очень хорошо знает границы своих знаний, и понты не кидает :)

Потрясающе.

>Жаба же считает его дураком, который в подобном коде точно не разберется, и просто препроцессора не содержит.

Посмотри чем отличается процес компиляции джабовских приложений от процесса компиляции сяшных, а потом умничай. Hint: .h файлы зачем? Помедитируй, а потом неси чушь про препроцессоры.

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

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

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

>>Жаба же считает его дураком, который в подобном коде точно не разберется, и просто препроцессора не содержит.

>Посмотри чем отличается процес компиляции джабовских приложений от процесса компиляции сяшных, а потом умничай.

Жависты начали ругаццо друк с друком :)

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

>Кстати, а почему еще никто не сказал, что ява - фигня, а наше все - >C#/mono ?

Потому что их уровень умственного развития не позволяет им троллить на ЛОРе :)

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

>Афтар пеши исчо!

>З.Ы. Рефакторинг нельзя реализовать только в случае отсутствия мозга у программиста :)

По заявкам пешу есчё. Ты сравни, сколько ШТУК рефакторингов осилили авторы BDStudio 2006, и сколько ДЕСЯТКОВ рефакторингов встроено в Идею. А потом подумай, почему нельзя все эти десятки реализовать для паскакаля?

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

>STL - это aut_ptr, который, как бы это помягче, не блещет возможностями.

интересная мысль. но, извините, не слишком умная. auto_ptr (видимо именно он имеется ввиду) великолепно исполняет свое назначение (вы знаете какое? или вы пересели с С++ еще до stl?) и другие возможности ему - как собаке пятая нога.

>тащить весь Boost ради классов указателей - это, ИМХО, расточиельно (мы же Си++, а не Java :))

ну это конечно не так. не стоит говорить того, чего незнаете (если конечно вы неиспытываете удовольствия от сиденья в луже). так вот, для того, чтобы пользоваться smart_ptr - вам ненужно тащить из буста НИЧЕГО. даже для компиляции вам нужно всего только 5 хидеров.

>То же возражение, что и по Boost.

все ваши возражения по бусту - пустой треп.

>В общем, вот вопрос - существуют ли широко распространенные компактные (или входящие в STL) библиотеки, реализующие "умные" указатели?

boost::shared_ptr, std::auto_ptr, boost::scoped_ptr, Loki::SmartPtr. буст - сейчас де-факто стандарт для большинства, разработчиков на C++. есть и множество других очень популярных фреймвоков например ACE, Qt.

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

> Опять сваливаешь всё в одну кучу, всё зависит от контекста

Речь не шла о применимости "в контексте". Речь шла о применимости Си++ для задач системного программирования. Я продемонстрировал, что Си++ для этого применяется - на нем пишут ядра ОС и их компоненты. Конечно, если понимать "системное программирование" как "программирование для ядра Линукс", ответ не так очевиден, но он всё таки _попложителен_. Упомянутая мной IBM GFS была написана на Си++ и перенесена на Линукс. Кроме того. существуют закрытые ФС, так же реализованные на Си++ и перенесенные на Линукс.

> системный программист на c++ - это что-то из разряда системного программиста на питоне

Я привер тебе примеры ядер ОС на Си++. А ты приведешь мне такие примеры для Питона?

> таких обычно бьют по голове и заставляют забыть всю муть, связанную с ООП (опять же в данном контексте).

В ядре Линукса довольно много ООП, говорю тебе как действующий в этом контексте системный программист. Это ООП реализовано на Си, но не перестает быть ООП.

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

> По заявкам пешу есчё. Ты сравни, сколько ШТУК рефакторингов осилили авторы BDStudio 2006, и сколько ДЕСЯТКОВ рефакторингов встроено в Идею. А потом подумай, почему нельзя все эти десятки реализовать для паскакаля?

Возможно ввиду отсутствия средств для интроспекции? ;-)

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

>А сейчас что использовать? В каких библиотеках прототипируется этот будущий стандарт?

буст.

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

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

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

>А вы компьютер только дома видите? На Украине компьютер - это редкость?

Ага. Мы тут вообще в каменном веке.

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

>Знаешь ,если у меня вдруг оторвется рука или нога я все же поползу к доктору а не буду пытаться вырастить новую руку из клетки :)

Это потому что в мире C++ руки в клетках выращивать не научились еще. Все памятью управляют.

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

>>>Народ, а как снизить потребление памяти в азуреусе?
>>Скажи ему правильный -Xmx параметр.


>Это чтобы лицезреть java.lang.OutOfMemoryException после n-ного
>времени работы программы ?

Да все верно человек говорит. У меня Azureus месяцами работает без
выключения и ест 54Мб штатно. На максимуме до 70Мб доходит.
Правда и JVM не от SUN'а...

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

>>STL - это aut_ptr, который, как бы это помягче, не блещет возможностями.

> интересная мысль. но, извините, не слишком умная.

Я и не собирался блистать умом

> auto_ptr (видимо именно он имеется ввиду) великолепно исполняет свое назначение

Не сомневаюсь. Только мне мало того, для чего он предназначен.

> или вы пересели с С++ еще до stl?

Задолго до нее. А так же до шаблонов, исключений и вас.

> не стоит говорить того, чего незнаете

Не стоит вырывать фраз из контекста.

> (если конечно вы неиспытываете удовольствия от сиденья в луже)

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

>>То же возражение, что и по Boost.

>все ваши возражения по бусту - пустой треп.

Вам виднее, какие у меня задачи.

tailgunner ★★★★★
()

Господа вы что-то забыли кто-такие Sun и почему можно писать неоптимизированные программы.

Sun в данном высказывании играет роль производителя аппаратуры, а обращение это к тем кто пишет - server side приложения, т.е. сервлеты, т.е. очередная попытка продать побольше аппаратуры.

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

>Это чтобы лицезреть java.lang.OutOfMemoryException после n-ного времени работы программы ?

Нет - это чтобы понизить порог, когда GC начинает активно собирать мусор. Если дать простенькой программе гиг памяти - она ее сожрет, потому что GC не будет особо напрягаться пока разрешенная память есть. Поскольку разрабы азуреуса не знают, какая там у тебя будет нагрузка - обычная политика поставить так, чтобы не было этого самого OutOfMemory. Но сам можешь поиграться - ты-то знаешь. Потому снизь границу, на которой GC начнет активно волноваться о кончающейся памяти. OOME ты словишь только в слуае, когда единоразово захочешь выделить кусок который больше оставшейся, или когда память выделяется быстрее чем коллектится. Во всех прочих случаях ты снизишь потребление памяти, которую хавает jvm. Если хочшь позаниматься тюнингом: http://java.sun.com/javase/technologies/hotspot/gc/index.jsp

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

>Кстати, а почему еще никто не сказал, что ява - фигня, а наше все - C#/mono ?

Это все знают - не отвлекайся.

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

>Возможно ввиду отсутствия средств для интроспекции? ;-)

Она там не нужна. Не потому. Если есть - удобне конечно, но не потому. В C/++ - макропроцессор вставляет палки очень нехилые. А в паскале не потому. Они памятью управляют - не мешай.

r ★★★★★
()

а мне нравится писать на джаве (аутсорсинг, J2EE ) - я наверное идиот? ну тогда мне нравится зарплата идиотов.

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

>Sun в данном высказывании играет роль производителя аппаратуры, а обращение это к тем кто пишет - server side приложения, т.е. сервлеты, т.е. очередная попытка продать побольше аппаратуры.

Стоимость разработки ПО (особенно на западе) заказчику обходится как правило выше стоимости оборудования.

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

>Нет - это чтобы понизить порог, когда GC начинает активно собирать мусор. Если дать простенькой программе гиг памяти - она ее сожрет, потому что GC не будет особо напрягаться пока разрешенная память есть. Поскольку разрабы азуреуса не знают, какая там у тебя будет нагрузка - обычная политика поставить так, чтобы не было этого самого OutOfMemory. Но сам можешь поиграться - ты-то знаешь. Потому снизь границу, на которой GC начнет активно волноваться о кончающейся памяти. OOME ты словишь только в слуае, когда единоразово захочешь выделить кусок который больше оставшейся, или когда память выделяется быстрее чем коллектится. Во всех прочих случаях ты снизишь потребление памяти, которую хавает jvm. Если хочшь позаниматься тюнингом: http://java.sun.com/javase/technologies/hotspot/gc/index.jsp

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

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

>Она там не нужна. Не потому. Если есть - удобне конечно, но не потому. >В C/++ - макропроцессор вставляет палки очень нехилые. А в паскале не >потому. Они памятью управляют - не мешай.

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

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