Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.211.87] |
|
Страницы: (6) [1] 2 3 ... 5 6 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
В последнее время стал все чаще задавать себе вопрос, зачем пишутся программы на транслируемых языках, если речь идет не о web-программах. В частности на жабе и питоне. Приведу пример из собственной практики. Сейчас я активно пользуюсь bittorrent-раздачами, решил подыскать хороший клиент. выделил для себя 3 основных:
Azureus (Java) - медленный и кушает память будь здоров (до 100 метров на 2-3 закачках - вместе с виртуальной машиной, естественно) G3 Torrent (Python) - более быстрый, меньше ест память, но процессор использует по черному - до 50-70% загрузки в спокойном состоянии, в свернутом - нормально, но все равно больше, чем на компилируемых языках, хотя меньше жабы. BitComet (VC++) - самый быстрый и наименее ресурсоемкий из всех перечисленных. Ну не понимаю я, зачем программы, для которых низкие требования к ресурсам - одно из главных условий? Почему бы не писать на C++, Delphi или других _компилируемых_ языках? Программа ведь будет работать от этого только быстрее. |
Сообщ.
#2
,
|
|
|
Я так думаю, проги на транслируемых языках портировать легче.
|
Сообщ.
#3
,
|
|
|
Абисняю.
Нынче процы быстры, а память дешева, не то что когда-то, и теперь есть возможность, наконец, решать задачу так, как удобно и эффективно для программиста, а не для машины. В результате цикл разработки сокращается, потому что задачу можно описать в терминах, естественных именно для такого рода задач, а не втискивать описание в прокрустово ложе средств, предоставляемых языком. Вот авторы этим и пользуются. Кстати, кто первый скажет, что лисп некомпилируем -- камнем брошу. |
Сообщ.
#4
,
|
|
|
Цитата Antikiller @ Я так думаю, проги на транслируемых языках портировать легче. По моему портировать большинство программ (во всяком случае C++/Delphi) не составит труда. Это не отмазка. Цитата Ho Im @ Нынче процы быстры, а память дешева, не то что когда-то, и теперь есть возможность, наконец, решать задачу так, как удобно и эффективно для программиста, а не для машины. Так то оно так, но 100 метров памяти это уже слишком для _фонового_ процесса, коим чаще всего является битторрен-закачка ввиду низких скоростей. А также высокая загрузка процессора. Для BitComet загрузка процессора более 10% - редкость, разве что во время создания или проверки хеша. Цитата Ho Im @ В результате цикл разработки сокращается, потому что задачу можно описать в терминах, естественных именно для такого рода задач, а не втискивать описание в прокрустово ложе средств, предоставляемых языком. Хочешь сказать что транслируемые языки имеют бОльшие преимущества в скорости разработки, чем компилируемые (особенно если применять RAD-средствавроде Delphi )? Цитата Ho Im @ Вот авторы этим и пользуются. Я бы таких авторов... камнями забросал. Они делают из мощных современных компов тормозное старье. |
Сообщ.
#5
,
|
|
|
Связь между производительностью проги и способом ее запуска (бинарик или интерпретация) косвенная. Гораздо больше зависит от ККР (коэффициента кривизны рук) программера. Хотя есть и клинические случаи типа Visual Basic, который для серьезных вычислительных задач непригоден. Впрочем, он для этого и не предназначался.
|
Сообщ.
#6
,
|
|
|
Программы на интерпретируемых (пофиг, из сырца или из байт-кода) языках (а не транслируемых, ибо все они транслируемые, вот в соседнем топике попался один деятель, не считавший HTML SGML'ем) в портировании, как правило, не нуждаются вообще, в отличие программ на сях и дельфях. В портировании нуждается только виртуальная машина. В силу сказанного тобой, грамотно написанная ВМ портируется без особого труда.
А теперь прикинь: портирование кучи нативного кода -- это "не составляет труда"*(размер вороха означенного кода). И портирование ВМ и ... ничегонеделанье с ворохом и без того кроссплатформенного кода. Ну еще, в интерпретируемых языках есть никак преимущество в виде возможности метапрограммирования, коей роскоши ни Си, ни Дельфя, позволить себе если и могут, то через большую, но тесную /dev/ass. |
Сообщ.
#7
,
|
|
|
Цитата Ну еще, в интерпретируемых языках есть никак преимущество в виде возможности метапрограммирования, коей роскоши ни Си, ни Дельфя, позволить себе если и могут, то через большую, но тесную /dev/ass. не знаю, как насчёт Дельфи, но насчёт Си (а именно - С++) ты, похоже, заблуждаешься. Или же мы имеем в виду РАЗНОЕ метапрограммирование. |
Сообщ.
#8
,
|
|
|
Имею в виду дописывание кусков кода и их исполнение "на лету" самой программой. Но... не машкодом, а вполне высокоуровневое дописывание.
Добавлено C++ позволяет, конечно, посредством тех же шаблонов, но это только на время компиляции. А иногда рантайма хочется. |
Сообщ.
#9
,
|
|
|
Цитата Ho Im @ В портировании нуждается только виртуальная машина. В силу сказанного тобой, грамотно написанная ВМ портируется без особого труда. Если так пойдет и дальше, то даже самые мощные компы можно будет выбрасывать на помойку. Даже .Net выглядит намного быстрее и менее ресурсоемкой технологией, чем вышеназванные. Цитата Ho Im @ А теперь прикинь: портирование кучи нативного кода -- это "не составляет труда"*(размер вороха означенного кода). И портирование ВМ и ... ничегонеделанье с ворохом и без того кроссплатформенного кода. Да ну... всего-то подобрать нужные кроссплатформенные библиотеки/компиляторы, несколько условий в коде... Я не выступаю вообще против программирования на транслируемых языках, а только против написания time- & resource-critical приложений. |
Сообщ.
#10
,
|
|
|
Во-первых, действительно, портируемость.
Во-вторых, полезные вещи -- типа высокоуровневого программирования (higher-order), которые намного проще реализовать именно в интерпретируемых языках (пример -- рефлекшен), а также garbage collection, встроенные средства безопасности и т.д. В-третьих, ускоряет разработку маленькое время компиляции (особенно в тех случаях, когда программу вообще необязательно компилировать . В-четвертых -- разница по скорости выполнения может вообще отсутствовать, если есть хороший JIT-компилятор. Есть примеры когда скорость выполнения программы на java даже быстрее чем программы, скомпилированной хорошим C++ компилятором, не говоря уже о Delphi. Именно из-за большей скорости разработки у программиста на том же Питоне есть больше времени на то, чтобы оптимизировать те части программы, которые действительно влияют на скорость/количество пожираемой памяти. Таких мест всегда очень мало -- работает то самое правило 10/90 -- 10% кода занимают 90% времени выполнения. Скажем, в области разработки игр, где требования к быстродействию крайне высоки есть несколько примеров больших, известных и очень успешных проектов, практически полностью разработанных на Java или Python. |
Сообщ.
#11
,
|
|
|
Цитата Ivan_Govnoff @ ускоряет разработку маленькое время компиляции (особенно в тех случаях, когда программу вообще необязательно компилировать . На Дельфи тоже скорость компиляции больше, возможностей больше, готовых библиотек и компонентов больше. Если нет возможности/желания на сях, то можно и на Дельфи писать, и работать будет быстрее, а памяти использовать меньше. Цитата Ivan_Govnoff @ Есть примеры когда скорость выполнения программы на java даже быстрее чем программы, скомпилированной хорошим C++ компилятором, не говоря уже о Delphi. Примеры в студию! Цитата Ivan_Govnoff @ Скажем, в области разработки игр, где требования к быстродействию крайне высоки есть несколько примеров больших, известных и очень успешных проектов, практически полностью разработанных на Java или Python. Аналогично! Желательно показать что-то подобное WarCraft || CS. |
Сообщ.
#12
,
|
|
|
Цитата s-mike @ На Дельфи тоже скорость компиляции больше, возможностей больше, готовых библиотек и компонентов больше. Если нет возможности/желания на сях, то можно и на Дельфи писать, и работать будет быстрее, а памяти использовать меньше. Ну мы ща будем скатываться к флейму C++ vs Delphi, это неинтересно... Кроме большей скорости компиляции на дельфи, остальные утверждения, мягко говоря, спорные. К тому же во многих случаях в интерпретируемых языках можно вообще ничего не компилировать -- это большое преимущество, как я уже сказал. Цитата s-mike @ Цитата Ivan_Govnoff @ Есть примеры когда скорость выполнения программы на java даже быстрее чем программы, скомпилированной хорошим C++ компилятором, не говоря уже о Delphi. Примеры в студию! http://kano.net/javabench/ Цитата Ivan_Govnoff @ Скажем, в области разработки игр, где требования к быстродействию крайне высоки есть несколько примеров больших, известных и очень успешных проектов, практически полностью разработанных на Java или Python. Цитата s-mike @ Аналогично! Желательно показать что-то подобное WarCraft || CS. "Ил-2", "Vampires: The Masquerade. The Redemption" -- написаны почти полностью на яве; "Blade Of Darkness" -- на Питоне. Есть даже игры, написанные на лиспе -- например "Jak & Daxter", которая видимо тоже была весьма успешной. |
Сообщ.
#13
,
|
|
|
Интересно, можно ли отнести к транслируемым языкам 1С? Внутри она на С++ написана, а все эти вызовы - всего лишь дёрганье за оле-дб. Или Win Scripting - можно ли? Портируемости нет, ну и что. Это не показатель.
|
Сообщ.
#14
,
|
|
|
Цитата Ivan_Govnoff @ Ил-2 Этот тот что от 1С? Примитивненькая графика 640х480 и нет AI? Теперь понятно почему. |
Сообщ.
#15
,
|
|
|
Цитата s-mike @ Примитивненькая графика 640х480 и нет AI? Теперь понятно почему. Да, наверное именно благодаря "примитивненькой графике" и "отсутствию АИ" ИЛ-2 вошел в десятку лучших симуляторов всех времен и народов по мнению крупнейшего игрового сайта ign.com |