URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 58963
[ Назад ]

Исходное сообщение
"Noop - новый язык для виртуальной машины Java"

Отправлено opennews , 17-Сен-09 21:21 
Разработчики Google выпустили (http://www.h-online.com/open/Noop-a-new-language-for-the-JVM... новый язык Noop (http://code.google.com/p/noop/), предназначенный для запуска на виртуальной машине Java (JVM). Авторы проекта описывают Noop как "новый язык, взявший все лучшее и отбросивший все худшее из современных и старых языков, в том числе и в области синтаксиса". Он построен (http://code.google.com/p/noop/wiki/Features) на основе объектно-ориентированных концепций "внедрения зависимости (http://ru.wikipedia.org/wiki/%D0%92%D0%B... (передача объекту ссылки на внешнюю зависимость при инициализации) и неизменяемости (Immutability). Язык имеет легко читаемый код, но строгую типизацию. Noop не реализует: статические методы, наследование и примитивы.

Для исходных текстов Noop запланированы три пути выполнения: трансляция в исходные тексты на языке Java, интерпретаци...

URL: http://www.h-online.com/open/Noop-a-new-language-for-the-JVM...
Новость: https://www.opennet.ru/opennews/art.shtml?num=23459


Содержание

Сообщения в этом обсуждении
"Noop - новый язык для виртуальной машины Java"
Отправлено Iv945n , 17-Сен-09 21:24 
> Noop не реализует: статические методы, наследование и примитивы.

Ну жизнь без статических методов ещё можно себе как-то представить, но без наследования - мягко говоря с трудом. А что такое примитивы?


"Noop - новый язык для виртуальной машины Java"
Отправлено rimidal , 17-Сен-09 22:45 
+1

Примитивы - это элементарные типы (int, float, double и т.п.). Да уж счетчик в форе это теперь экземпляр класа. Просто жесть. И флажок теперь это уже роскошь.

P.S. Noop - полный бред. Даже смотреть на него как-то не хочется.


"Noop - новый язык для виртуальной машины Java"
Отправлено Поросеночек , 17-Сен-09 23:33 
>Да уж счетчик в форе это теперь экземпляр класа.

А стандартные итераторы C++ и итераторы в общем - это уже не экземпляры классов?


"Noop - новый язык для виртуальной машины Java"
Отправлено rimidal , 17-Сен-09 23:59 
я имел в виду:

for(int i=0; i<5; i++){
   ......
}


"Noop - новый язык для виртуальной машины Java"
Отправлено аноним , 18-Сен-09 00:48 
>счетчик в форе это теперь экземпляр класа. Просто жесть.

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


"Noop - новый язык для виртуальной машины Java"
Отправлено СуперАноним , 18-Сен-09 06:30 
Извините, но объектно-ориентированные концепции и отсутствие наследования, это как сочетается?

"Noop - новый язык для виртуальной машины Java"
Отправлено Arsenicum , 18-Сен-09 10:35 
"Внедрение зависимостей" полная замена наследования. Вопрос в том как привыкнуть к такому и насколько это удобно. Time will tell.

"Noop - новый язык для виртуальной машины Java"
Отправлено Warhead Wardick , 18-Сен-09 18:25 
>Если там нет наследования и виртуальных функций, оверхеда не будет, скорость такая-же, как с интом, зато возможность методы и возможность наследования.

Да-да-да :) Там весь класс итератора святым духом упакуется в какой нить EAX регистр проца _целиком_ ... и снова "жава быстрее процессора" :)


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 17-Сен-09 21:55 
От разработчиков Гугла было бы больше пользы, если бы они решали реальные задачи. Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java. Результаты их работы были бы намного более ценны. А создавать новый язык... которых и так наплодилось видимо-невидимо... Не скажу, что это плохо... но распылять драгоценные ресурсы на необязательные вещи на мой взгляд нерационально, тем более, что нормальных разработчиков в мире по пальцам пересчитать. А работы по программированию в мире, даже исходя из текущих задач, хватит еще на десятки лет вперед, не считая того, что всё постоянно движется, и постоянно появляются новые задачи.

"Noop - новый язык для виртуальной машины Java"
Отправлено iZEN , 17-Сен-09 22:07 
>Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java.

GCC слишком перегружен. Хорошо, что появился LLVM. Вовремя, надо сказать, и под либеральной лицензией.


"Noop - новый язык для виртуальной машины Java"
Отправлено FUKEDITOR , 17-Сен-09 22:56 
> GCC слишком перегружен. Хорошо, что появился LLVM.

Угу, а LLVM в свою очередь использует GCC в качестве backend-a :-D


"Noop - новый язык для виртуальной машины Java"
Отправлено marv , 18-Сен-09 00:10 
только без паники: по словам разрабов - это временно.

"Noop - новый язык для виртуальной машины Java"
Отправлено User294 , 18-Сен-09 01:59 
"нет ничего более постоянного чем временное".

ЗЫ даже ваша жизнь - не более чем временное явление. Поэтому довольно слабое утешение если это временное означает "50 лет" например :)


"Noop - новый язык для виртуальной машины Java"
Отправлено Йух , 18-Сен-09 10:21 
Простите, чем это он перегружен? ЛЛВМ не быстрее гцц, а то и медленнее. :\

"Noop - новый язык для виртуальной машины Java"
Отправлено vitek , 18-Сен-09 13:46 
он видимо имел ввиду, что он перегружен всякими бзд-системами, в которых им приходиться пользоваться...
а для таких либералов - это как серпом по ядрам.

"Noop - новый язык для виртуальной машины Java"
Отправлено vitek , 18-Сен-09 21:38 
столько показателей своей правоты я давно не получал. :-DDDDDDDDDDDDDD

"Noop - новый язык для виртуальной машины Java"
Отправлено usr , 17-Сен-09 22:08 
Угу. Учитывая непонятки с Sun, могли бы сделать "Java 3", из которой бы выбросили весь legacy груз. По аналогии с Python. Тем более, применять есть где - свой же Android.

"Noop - новый язык для виртуальной машины Java"
Отправлено Александр , 18-Сен-09 09:03 
> могли бы сделать "Java 3", из которой бы выбросили весь legacy груз

И к чертям все стандарты в яве. Не, так дела не делаются. Можно, конечно, новую платформу замутить, и будет еще один J++/J#, уже от гугла :)


"Noop - новый язык для виртуальной машины Java"
Отправлено vitek , 18-Сен-09 14:23 
>Учитывая непонятки с Sun, могли бы сделать "Java 3",

т.е. sun, учитывая непонятки с самими собой, могла бы....


"Noop - новый язык для виртуальной машины Java"
Отправлено Voviandr , 17-Сен-09 22:42 
>От разработчиков Гугла было бы больше пользы, если бы они решали реальные
>задачи. Раз уж им интересна работа с языками, то лучше бы
>пилили Java

добавили бы делегаты - цены  тогда яве бы не было .


"Noop - новый язык для виртуальной машины Java"
Отправлено Александр , 18-Сен-09 09:04 
Зачем они ей? Там и без делегатов все нормально делается.

"Noop - новый язык для виртуальной машины Java"
Отправлено Voviandr , 18-Сен-09 13:27 
делегаты - это реализованный в языке паттерн проектирования "observer".
паттерны очень хороши для тех, кто умеет ими пользоваться и знает, как и где их применять.
а анонимный класс - это гемор. он неудобен.
также неплохо бы добавить properties в стиле c#.
опять-таки - реализация паттерна "proxy".
очень нужная и полезная.

"Noop - новый язык для виртуальной машины Java"
Отправлено uZver , 18-Сен-09 10:06 
> добавили бы делегаты - цены  тогда яве бы не было .

first class property я еще понимаю зачем. Удобно, но можно прожить и без них. А вот нафига делегаты?


"Noop - новый язык для виртуальной машины Java"
Отправлено Аноним , 17-Сен-09 22:11 
в Android и так не обычная а специфическая реализация Java, не от Sun

"Noop - новый язык для виртуальной машины Java"
Отправлено uZver , 18-Сен-09 10:07 
да ладно ;)

там обычная java только без swing, а со своим GUI-подходом. Остальное это дополнительные либы.


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 18-Сен-09 13:18 
>да ладно ;)
>
>там обычная java только без swing, а со своим GUI-подходом. Остальное это
>дополнительные либы.

Там регистровая виртуальная машина Dalvik, которая не совместима со стековой виртуальной машиной от Сан. jar-ки надо перекомпилировать сначала, прежде чем запускать под Dalvik-ом. Трудозатраты сравнимые с компиляцией в родной код при помоши gcj.


"Noop - новый язык для виртуальной машины Java"
Отправлено uZver , 19-Сен-09 10:44 
> Там регистровая виртуальная машина Dalvik, которая не совместима со стековой виртуальной машиной от Сан. jar-ки надо перекомпилировать сначала, прежде чем запускать под Dalvik-ом. Трудозатраты сравнимые с компиляцией в родной код при помоши gcj.

тип ВМ не задается спекой потому регистровая или стековая для приложения - пофигу. разница в байт-коде - да, есть. Но если перенести пред-компилер darvik на сам darvik, то Андроит сожет запускать и свой байт-код и стандартный java byte-code. Во втором случае добавится еще одна фаза, но сама ВМ дарвика не меняется.

gcj при всем поем уважении к OpenSource & FSF не JAVA. на этом все и заканчивается. таких глюко-багов как на gcj на РАБОТАЮЩИХ приложениях я не ловил больше нигде.

Как java dev рекомендую при первой возможности сносить gcj и ставить либо sun JDK либо OpenJDK либо IcedTed (RedHat)


"Noop - новый язык для виртуальной машины Java"
Отправлено pro100master , 17-Сен-09 22:31 
>is a new language experiment that attempts to blend the best lessons of >languages old and new, while syntactically encouraging industry best-practices >and discouraging the worst offenses

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


"Noop - новый язык для виртуальной машины Java"
Отправлено rimidal , 17-Сен-09 22:40 
Сколько уже можно плодить виртуальные машины и интерпритаторы? Может хватит? Java как язык довольно совершенен. Единственный на мой взгляд недостаток так это апетиты по памяти у JVM. Лучше бы саму виртуальную машину пилили.

"Noop - новый язык для виртуальной машины Java"
Отправлено andr.mobi , 18-Сен-09 09:55 
> Java как язык довольно совершенен.

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


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 18-Сен-09 13:10 
> IMHO джава - уродец

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

Да, со стековой виртуальной машиной они ошиблись (так же как и автора *апаратных* стековых машнин: MIPS, Z80, Intel 8080, etc.) - архитектура MIPS (которая почти один-в-один соответствует архитектуре JVM) плохо ложится на архитектуру CISC (и наоборот). Но на SUN JVM жизнь не заканчивается - есть регистровые виртуальные машины (Dalvik, LLVM, etc.), есть компиляция в родной код (gcj, etc.).

Основная проблема Явы не в этом, основная проблема в архитектуре програмирования вообше.

"Тормоза" - это выполнение никому не нужного кода. Этим страдают все програмы на сегодняшний день. Большие и сложные програмы этим страдают больше. Основные причины - инициализация кода и перестраховка.

Noop очень облегчает работу с инициализацией програмы - это конкретный шаг вперёд, но не в те двери.

Что нужно?

Нужен продвинутый аналог prelinking - запускать програму, делать дам памяти, скидывать дамп инициализованых областей памяти на диск и в следующий раз запускать с этого места, опуская процес сборки програмы. Желательно исполнять инициализиционный код ещё на этапе компиляции.

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


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 15:14 
>Покажи что-то лучшее из универсальных языков.

C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является универсальным языком. К тому же для него на порядки меньше библиотек, чем для Си и Си++. И даже относительно простая стыковка с C не особо спасает Java.

> Ява вобрала в себя лучшее из
>Си и Обьектного Си, откинув в сторону проблематичные участки.

"Откинув в сторону"? "Проблематичные участки"?

Если говорить о Java как об универсальном языке, то:

Никто ведь не заставляет начинающего пользоваться всеми возможностями Си++, которые он оценит только, став профессионалом. Sun порезали всё самое полезное в Си/Си++, выкинув шаблоны (и заодно стандартную библиотеку C++, в том числе std::vector и std::map [аналогов которых в Java не было до Java 6]), препроцессор, операции с указателями, множественное наследование и т.д., без которых создание больших систем становится значительно сложнее, а из-за усложнения алгоритма появляются неизбежные тормоза и излишний расход памяти. Лучше бы добавили что-то к Си/Си++. Вот это было бы круто. Страуструп (создатель Си++) ведь придумал очень... очень гибкую вещь. Фактически сам язык не изменялся более 10 лет, и тем не менее ни чуть не устарел.

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

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


"Noop - новый язык для виртуальной машины Java"
Отправлено anonumous , 18-Сен-09 17:02 
> td::vector и std::map [аналогов которых в Java не было до Java 6])

java.util.Vector Since: JDK1.0
java.util.Hashtable Since: JDK1.0
java.util.HashMap Since: JDK1.2


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 17:13 
Анонимус, сравни расход памяти и скорость обращения к элементу вектора из миллиона элементов по одному байту. Всё тобой перечисленное совсем не то же самое, что std::vector и std::map.

"Noop - новый язык для виртуальной машины Java"
Отправлено anonymous , 18-Сен-09 17:35 
Начиная с jdk1.2 Vector переписали, к тому же методы в нем синхронизованы. От того и тормоза. Нужна скорость, пользуем ArrayList. Но он появился ну никак не в 6-й версии. Гораздо раньше.

"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 18:10 
В Java вектор хранит ссылки на _объекты_, а в C++ - сами объекты. Т.е. накладные расходы на хранение 1 байта в векторе C++ практически равны 0. В Java нужно хранить объект, на хранение которого нужно как минимум 8 байт + ссылка на объект в самом векторе (как минимум 4 байта), т.е. в сравнении с C++ разница в хранении простых типов данных как минимум на порядок.

"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 18-Сен-09 18:44 
> в сравнении с C++ разница
>в хранении простых типов данных как минимум на порядок.

http://java.sun.com/j2se/1.4.2/docs/api/java/nio/ByteBuffer....


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 19:00 
>> в сравнении с C++ разница
>>в хранении простых типов данных как минимум на порядок.
>
>http://java.sun.com/j2se/1.4.2/docs/api/java/nio/ByteBuffer....

ByteBuffer не поддерживает динамический размер, в отличие от std::vector.
Производительность ByteBuffer ниже, чем у std::vector.
В std::vector можно хранить как простые типы, так и объекты.
К std::vector можно применять алгоритмы стандартной библиотеки Си++.
std::vector поддерживает контроль типов (т.к. является шаблоном Си++).
std::vector в определенных случаях можно прозрачно можно заменить на std::deque или другой контейнер с нужными характеристиками.
std::vector совместим с массивами Си (vector.data()), что важно при обмене данными с библиотеками dll/so, имеющими интерфейс Си, коих большинство.


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 18-Сен-09 19:10 
>ByteBuffer не поддерживает динамический размер, в отличие от std::vector.

Не проблема - сделаем.

>Производительность ByteBuffer ниже, чем у std::vector.

Тесты - в студию.

>В std::vector можно хранить как простые типы, так и объекты.
>К std::vector можно применять алгоритмы стандартной библиотеки Си++.
>std::vector поддерживает контроль типов (т.к. является шаблоном Си++).
>std::vector в определенных случаях можно прозрачно можно заменить на std::deque или другой
>контейнер с нужными характеристиками.

java.util.Vector, java.util.ArrayList, java.util.LinkedList

>std::vector совместим с массивами Си (vector.data()), что важно при обмене данными с
>библиотеками dll/so, имеющими интерфейс Си, коих большинство.

ByteBuffer тоже.


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 19:52 
>>ByteBuffer не поддерживает динамический размер, в отличие от std::vector.
>
>Не проблема - сделаем.

Пилите, пилите... :)

>>Производительность ByteBuffer ниже, чем у std::vector.
>
>Тесты - в студию.

Тестирование - это твоё домашнее задание :)

>>В std::vector можно хранить как простые типы, так и объекты.
>>К std::vector можно применять алгоритмы стандартной библиотеки Си++.
>>std::vector поддерживает контроль типов (т.к. является шаблоном Си++).
>>std::vector в определенных случаях можно прозрачно можно заменить на std::deque или другой
>>контейнер с нужными характеристиками.
>
>java.util.Vector, java.util.ArrayList, java.util.LinkedList

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


>>std::vector совместим с массивами Си (vector.data()), что важно при обмене данными с
>>библиотеками dll/so, имеющими интерфейс Си, коих большинство.
>
>ByteBuffer тоже.

Исли бы еще ты смог легко обернуть в ByteBuffer возвращаемый массив Си и прозрачно вызвать функцию dll/so из Java без написания дополнительного кода :)


"Noop - новый язык для виртуальной машины Java"
Отправлено iZEN , 19-Сен-09 00:47 
>Слабое утешение, для тех, кто знаком с мощью Си++ и его стандартной
>библиотеки.

Для C++ есть что-либо подобное системе управления жизненным циклом приложения Apache Maven?



"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 19-Сен-09 00:53 
>>Слабое утешение, для тех, кто знаком с мощью Си++ и его стандартной
>>библиотеки.
>
>Для C++ есть что-либо подобное системе управления жизненным циклом приложения Apache Maven?
>

Maven - это помесь make с apt-get-ом и deb/rpm. Нашел чем хвастатся. При интеграции с линуксом с ним больше проблем чем пользы.


"Noop - новый язык для виртуальной машины Java"
Отправлено iZEN , 19-Сен-09 19:53 
>При интеграции с линуксом с ним больше проблем чем пользы.

А что, позвольте спросить, у вас вызвало затруднение при интеграции Maven в систему, прописывание переменной окружения M2_HOME или изменение пути к локальному репозиторию?


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 20-Сен-09 00:09 
>А что, позвольте спросить, у вас вызвало затруднение при интеграции Maven в
>систему, прописывание переменной окружения M2_HOME или изменение пути к локальному репозиторию?
>

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

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


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 19-Сен-09 01:13 
>>>ByteBuffer не поддерживает динамический размер, в отличие от std::vector.
>>
>>Не проблема - сделаем.
>
>Пилите, пилите... :)

Ты догадываешся, как изменяется размер в std::vector или тебе подсказать про memcpy?

>>>Производительность ByteBuffer ниже, чем у std::vector.
>>
>>Тесты - в студию.
>
>Тестирование - это твоё домашнее задание :)

А, студик.

>>java.util.Vector, java.util.ArrayList, java.util.LinkedList
>
>Слабое утешение, для тех, кто знаком с мощью Си++ и его стандартной
>библиотеки.

Да, мощи STL боятся даже автора: то то нельзя использовать, то это. Даже в машкодах не напишеш такой х...ни как на STL. А баги там отлавливают до сих пор. Boost++ или QT и то значительно лучше.

>К тому же не спасают ни от одного выше и ниже перечисленного
>пункта :)

Да ну? Ещё скажи что с ними не написали ни одной програмы.

>Исли бы еще ты смог легко обернуть в ByteBuffer возвращаемый массив Си

А для чего он, по твоему, предназначен? С пакетом java.nio знаком? http://java.sun.com/j2se/1.4.2/docs/api/java/nio/package-sum...

>и прозрачно вызвать функцию dll/so из Java без написания дополнительного кода
>:)

Ага, и на всех платформах, даже на тех, где динамических библиотек нет, и со всеми возможными типами даных. Представляю себе код: 300 строчек проверяют архитектуру, разрядность, представление данных, ос-ку, версию библиотек, тип компилятора, тип библиотеки, формат линковки, название функции, и потом одной строкой %легко!% вызвать функцию из либы для arm32 на x86_64 в режиме x86_32.


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 19:05 
С помощью vector.data() можно получить указатель на внутренний буфер вектора, далее обработать данные вектора в стиле Си, используя полученный указатель, потом вернуться к работе с вектором в стиле Си++, используя все прелести std::vector.

"Noop - новый язык для виртуальной машины Java"
Отправлено Warhead Wardick , 18-Сен-09 18:58 
Ну дык о чем и речь!

А то вон выше по треду утверждают что объект для счетчика цикла вместо инта - цикл ничуть не затормозит :) Жабщики такие жабшики! :)

При этом прошу заметить - я ничего не имею против Java когда на ней делают че нить типа серверной части ERP\CRM\LA\BPA - я даже обоими руками за!


"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 18-Сен-09 18:09 
>>Покажи что-то лучшее из универсальных языков.
>
>C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является
>универсальным языком. К тому же для него на порядки меньше библиотек,
>чем для Си и Си++. И даже относительно простая стыковка с
>C не особо спасает Java.

$ cat HW.java

public class HW {
  public static void main(final String args[]) {
    System.out.println("Hello, world!");
  }
}

$ cat mk.sh
#!/bin/bash

javac *.java
gcj -O3 -o hw *.class --main=HW
strip ./hw
rm -f *.class

$ du -bsh ./hw
5,3K    ./hw

$ time ./hw
Hello, world!

real    0m0.071s
user    0m0.028s
sys    0m0.011s


В gcc, Ява и Си++ компилируются практически одним компилятором, а Си++ и Яву можно свободно смешивать в пределах одного класса (один метод на Яве, другой на Си++). Если Ява не универсальный язык, то и Си++ - тоже. Если Си++ хороший - то и Ява тоже.

(Я согласен что виртуальная машина хуже апаратной).


> Sun порезали всё самое полезное в Си/Си++, выкинув
>шаблоны (и заодно стандартную библиотеку C++, в том числе std::vector и
>std::map [аналогов которых в Java не было до Java 6]), препроцессор,
>операции с указателями, множественное наследование и т.д., без которых создание больших
>систем становится значительно сложнее, а из-за усложнения алгоритма появляются неизбежные тормоза
>и излишний расход памяти.

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


>> Процесоры уже делают предсказание ветвлений и прочую фигню - нужно облегчить им эту задачу.
>
>Используй Си/Си++ (возможно, в горячих участках вместе с Ассемблером) и читай рекомендации
>по оптимизации.

Ассемблер для нескольких процесоров (x86, x86_64, ARM, MIPS) мне учить не охота - мне ещё знание ассемблера для PDP-11 не пригодилось пока. Потратить несколько лет чтобы выиграть несколько секунд - спасиба за подсказку. :-/

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

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

Про пересмотр алгоритма учат ещё в школе.


"Noop - новый язык для виртуальной машины Java"
Отправлено IGX , 18-Сен-09 18:46 
>[оверквотинг удален]
>public class HW {
>  public static void main(final String args[]) {
>    System.out.println("Hello, world!");
>  }
>}
>
>В gcc, Ява и Си++ компилируются практически одним компилятором, а Си++ и
>Яву можно свободно смешивать в пределах одного класса (один метод на
>Яве, другой на Си++). Если Ява не универсальный язык, то и
>Си++ - тоже. Если Си++ хороший - то и Ява тоже.

1) Много ли вы знаете скомпилированных gcj программ более ста тысяч строк? Я лично их не встречал, из чего делаю вывод, что не всё с gcj гладко, возможно, он поддерживает только старые стандарты Java, может быть, есть и другие проблемы, например со Swing и другими библиотеками.

2) Много ли вы знаете скомпилированных gcc программ для Windows? Я не знаю ни одной крупной системы, скомпилированной под Windows gcc.

_Фактически_ gcc + gcj под Windows не работоспособны. Я не думаю, что сейчас очень умно писать крупную систему, заточенную только под Unix, и тем более опираясь на gcj.

Мое мнение: В общем случае Java вместе с сопуствующими библитеками хорош для некоторых межплатформенных программ и Web-сервера.

>> Sun порезали всё самое полезное в Си/Си++, выкинув
>>шаблоны (и заодно стандартную библиотеку C++, в том числе std::vector и
>>std::map [аналогов которых в Java не было до Java 6]), препроцессор,
>>операции с указателями, множественное наследование и т.д., без которых создание больших
>>систем становится значительно сложнее, а из-за усложнения алгоритма появляются неизбежные тормоза
>>и излишний расход памяти.
>
>Если мне не изменяет память, в Си (который вы почему-то смешиваете с
>Си++) тоже этого нет,

Си является подмножеством Си++.

> но програмы на Си как правило быстрее.

Неверно. Си является подмножеством Си++.
На Си писать крупную систему... лучше сразу умереть. Хотя есть примеры ООП на Си: GTK, но это удовольствие для любителей садо-мазо.

>>> Процесоры уже делают предсказание ветвлений и прочую фигню - нужно облегчить им эту задачу.
>>
>>Используй Си/Си++ (возможно, в горячих участках вместе с Ассемблером) и читай рекомендации
>>по оптимизации.
>
>Ассемблер для нескольких процесоров (x86, x86_64, ARM, MIPS) мне учить не охота
>- мне ещё знание ассемблера для PDP-11 не пригодилось пока. Потратить
>несколько лет чтобы выиграть несколько секунд - спасиба за подсказку. :-/

Под мобильники крупные системы не пишут.


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

Для Си это неверно. В Си в половине случаев для ускорения алгоритма приходится увеличивать количество кода. Как минимум читай руководства по оптимизации от Intel и книги Криса Касперского.


"Noop - новый язык для виртуальной машины Java"
Отправлено iZEN , 19-Сен-09 00:45 
>Под мобильники крупные системы не пишут.

Да ну?

Java Platform SIP Support:
Java ME Platform
• JSR-180 (SIP API)
• JSR-281 (IMS API)
• Other useful JSR's on the client side
• JSR-135 (Mobile Media API)
Java EE Platform
• JSR-116 (Sip Servlet 1.0 API)
• JSR-289 (Sip Servlet 1.1)
• Other useful JSR's on the server
• JSR-141 (Session Description API)
• JSR-309 (Media Server Control API)



"Noop - новый язык для виртуальной машины Java"
Отправлено Volodymyr Lisivka , 19-Сен-09 01:31 
>1) Много ли вы знаете скомпилированных gcj программ более ста тысяч строк?
>Я лично их не встречал, из чего делаю вывод, что не
>всё с gcj гладко, возможно, он поддерживает только старые стандарты Java,
>может быть, есть и другие проблемы, например со Swing и другими
>библиотеками.

Еклипса. Не всё гладко с gcc - там NullPointerException не принято бросать - лично я ни разу не видел. ;-) Падение всей системы при ошибке для наСильников - нормальное явление.

>2) Много ли вы знаете скомпилированных gcc программ для Windows? Я не
>знаю ни одной крупной системы, скомпилированной под Windows gcc.

Мне винда не интересна, но про CygWin я знаю. А ты?

>_Фактически_ gcc + gcj под Windows не работоспособны.

Почему? Я думаю что MinGW + Gcj чудесно работают до сих пор. Я их пробовал лет 5 назад.
Но сейчас для винды есть вариант получше - .Net.

> Я не думаю, что
>сейчас очень умно писать крупную систему, заточенную только под Unix, и
>тем более опираясь на gcj.

Вы про Линукс? :-)

>Мое мнение: В общем случае Java вместе с сопуствующими библитеками хорош для
>некоторых межплатформенных программ и Web-сервера.

И ещё для индустрии игр (JavaME).

>>Если мне не изменяет память, в Си (который вы почему-то смешиваете с
>>Си++) тоже этого нет,
>
>Си является подмножеством Си++.

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

>> но програмы на Си как правило быстрее.
>
>Неверно. Си является подмножеством Си++.

Читайте стандарты. AFAIK, restricted не распознается компилятором Си++. А это очень полезное ключевое слово.

>На Си писать крупную систему... лучше сразу умереть. Хотя есть примеры ООП
>на Си: GTK, но это удовольствие для любителей садо-мазо.

С Си++ удовольствия ещё меньше.

>>Ассемблер для нескольких процесоров (x86, x86_64, ARM, MIPS) мне учить не охота
>>- мне ещё знание ассемблера для PDP-11 не пригодилось пока. Потратить
>>несколько лет чтобы выиграть несколько секунд - спасиба за подсказку. :-/
>
>Под мобильники крупные системы не пишут.

А часть крупной системы под мобилку писать можно?


>>> Если тебе нужно поднять производительность на порядки, то неизбежен пересмотр алгоритма.
>>
>>Поднять производительность можно только уменьшая количество выполняемого кода и приоритизируя его.
>
>Для Си это неверно. В Си в половине случаев для ускорения алгоритма
>приходится увеличивать количество кода.

Ну и я о том же.


"Noop - новый язык для виртуальной машины Java"
Отправлено iZEN , 19-Сен-09 00:38 
>C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является универсальным языком. К тому же для него на порядки меньше библиотек, чем для Си и Си++. И даже относительно простая стыковка с C не особо спасает Java.

Тесты говорят об обратном: http://kano.net/javabench/data

Количество СТАНДАРТНЫХ библиотек Java описывается вот этими спецификациями: http://jcp.org/en/jsr/all


"Noop - новый язык для виртуальной машины Java"
Отправлено vitek , 18-Сен-09 13:47 
вот так медленно и постепенно придём к языку noob

"Noop - новый язык для виртуальной машины Java"
Отправлено ximaera , 21-Сен-09 15:25 
С ума сойти. Язык ещё в альфа-версии, "You can't code anything interesting in Noop yet", но о нём уже раззвонили, как же, ведь это же Google!

Вот когда хотя бы релиз транслятора будет, тогда и стоило бы говорить о Noop.