Разработчики 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 не реализует: статические методы, наследование и примитивы.Ну жизнь без статических методов ещё можно себе как-то представить, но без наследования - мягко говоря с трудом. А что такое примитивы?
+1Примитивы - это элементарные типы (int, float, double и т.п.). Да уж счетчик в форе это теперь экземпляр класа. Просто жесть. И флажок теперь это уже роскошь.
P.S. Noop - полный бред. Даже смотреть на него как-то не хочется.
>Да уж счетчик в форе это теперь экземпляр класа.А стандартные итераторы C++ и итераторы в общем - это уже не экземпляры классов?
я имел в виду:for(int i=0; i<5; i++){
......
}
>счетчик в форе это теперь экземпляр класа. Просто жесть.И что? А про итераторы забыли? И чем, по-вашему плох класс в качестве счетчика? Если там нет наследования и виртуальных функций, оверхеда не будет, скорость такая-же, как с интом, зато возможность методы и возможность наследования.
Извините, но объектно-ориентированные концепции и отсутствие наследования, это как сочетается?
"Внедрение зависимостей" полная замена наследования. Вопрос в том как привыкнуть к такому и насколько это удобно. Time will tell.
>Если там нет наследования и виртуальных функций, оверхеда не будет, скорость такая-же, как с интом, зато возможность методы и возможность наследования.Да-да-да :) Там весь класс итератора святым духом упакуется в какой нить EAX регистр проца _целиком_ ... и снова "жава быстрее процессора" :)
От разработчиков Гугла было бы больше пользы, если бы они решали реальные задачи. Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java. Результаты их работы были бы намного более ценны. А создавать новый язык... которых и так наплодилось видимо-невидимо... Не скажу, что это плохо... но распылять драгоценные ресурсы на необязательные вещи на мой взгляд нерационально, тем более, что нормальных разработчиков в мире по пальцам пересчитать. А работы по программированию в мире, даже исходя из текущих задач, хватит еще на десятки лет вперед, не считая того, что всё постоянно движется, и постоянно появляются новые задачи.
>Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java.GCC слишком перегружен. Хорошо, что появился LLVM. Вовремя, надо сказать, и под либеральной лицензией.
> GCC слишком перегружен. Хорошо, что появился LLVM.Угу, а LLVM в свою очередь использует GCC в качестве backend-a :-D
только без паники: по словам разрабов - это временно.
"нет ничего более постоянного чем временное".ЗЫ даже ваша жизнь - не более чем временное явление. Поэтому довольно слабое утешение если это временное означает "50 лет" например :)
Простите, чем это он перегружен? ЛЛВМ не быстрее гцц, а то и медленнее. :\
он видимо имел ввиду, что он перегружен всякими бзд-системами, в которых им приходиться пользоваться...
а для таких либералов - это как серпом по ядрам.
столько показателей своей правоты я давно не получал. :-DDDDDDDDDDDDDD
Угу. Учитывая непонятки с Sun, могли бы сделать "Java 3", из которой бы выбросили весь legacy груз. По аналогии с Python. Тем более, применять есть где - свой же Android.
> могли бы сделать "Java 3", из которой бы выбросили весь legacy грузИ к чертям все стандарты в яве. Не, так дела не делаются. Можно, конечно, новую платформу замутить, и будет еще один J++/J#, уже от гугла :)
>Учитывая непонятки с Sun, могли бы сделать "Java 3",т.е. sun, учитывая непонятки с самими собой, могла бы....
>От разработчиков Гугла было бы больше пользы, если бы они решали реальные
>задачи. Раз уж им интересна работа с языками, то лучше бы
>пилили Javaдобавили бы делегаты - цены тогда яве бы не было .
Зачем они ей? Там и без делегатов все нормально делается.
делегаты - это реализованный в языке паттерн проектирования "observer".
паттерны очень хороши для тех, кто умеет ими пользоваться и знает, как и где их применять.
а анонимный класс - это гемор. он неудобен.
также неплохо бы добавить properties в стиле c#.
опять-таки - реализация паттерна "proxy".
очень нужная и полезная.
> добавили бы делегаты - цены тогда яве бы не было .first class property я еще понимаю зачем. Удобно, но можно прожить и без них. А вот нафига делегаты?
в Android и так не обычная а специфическая реализация Java, не от Sun
да ладно ;)там обычная java только без swing, а со своим GUI-подходом. Остальное это дополнительные либы.
>да ладно ;)
>
>там обычная java только без swing, а со своим GUI-подходом. Остальное это
>дополнительные либы.Там регистровая виртуальная машина Dalvik, которая не совместима со стековой виртуальной машиной от Сан. jar-ки надо перекомпилировать сначала, прежде чем запускать под Dalvik-ом. Трудозатраты сравнимые с компиляцией в родной код при помоши gcj.
> Там регистровая виртуальная машина Dalvik, которая не совместима со стековой виртуальной машиной от Сан. jar-ки надо перекомпилировать сначала, прежде чем запускать под Dalvik-ом. Трудозатраты сравнимые с компиляцией в родной код при помоши gcj.тип ВМ не задается спекой потому регистровая или стековая для приложения - пофигу. разница в байт-коде - да, есть. Но если перенести пред-компилер darvik на сам darvik, то Андроит сожет запускать и свой байт-код и стандартный java byte-code. Во втором случае добавится еще одна фаза, но сама ВМ дарвика не меняется.
gcj при всем поем уважении к OpenSource & FSF не JAVA. на этом все и заканчивается. таких глюко-багов как на gcj на РАБОТАЮЩИХ приложениях я не ловил больше нигде.
Как java dev рекомендую при первой возможности сносить gcj и ставить либо sun JDK либо OpenJDK либо IcedTed (RedHat)
>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Эксперимент? Так что вряд ли мы увидим серьёзное продолжение :)))
Сколько уже можно плодить виртуальные машины и интерпритаторы? Может хватит? Java как язык довольно совершенен. Единственный на мой взгляд недостаток так это апетиты по памяти у JVM. Лучше бы саму виртуальную машину пилили.
> Java как язык довольно совершенен.вы явно не знаете больше ничего кроме джавы и вообще о языках программирования имеете весьма поверхностное представление. IMHO джава - уродец, так же как и его "стековая" виртуальная машина. а люди всегда тратят свои ресурсы не оптимально - делают то, до чего мозги доросли, и всегда сетуют на "задним умом".
> IMHO джава - уродецПокажи что-то лучшее из универсальных языков. Ява вобрала в себя лучшее из Си и Обьектного Си, откинув в сторону проблематичные участки.
Да, со стековой виртуальной машиной они ошиблись (так же как и автора *апаратных* стековых машнин: MIPS, Z80, Intel 8080, etc.) - архитектура MIPS (которая почти один-в-один соответствует архитектуре JVM) плохо ложится на архитектуру CISC (и наоборот). Но на SUN JVM жизнь не заканчивается - есть регистровые виртуальные машины (Dalvik, LLVM, etc.), есть компиляция в родной код (gcj, etc.).
Основная проблема Явы не в этом, основная проблема в архитектуре програмирования вообше.
"Тормоза" - это выполнение никому не нужного кода. Этим страдают все програмы на сегодняшний день. Большие и сложные програмы этим страдают больше. Основные причины - инициализация кода и перестраховка.
Noop очень облегчает работу с инициализацией програмы - это конкретный шаг вперёд, но не в те двери.
Что нужно?
Нужен продвинутый аналог prelinking - запускать програму, делать дам памяти, скидывать дамп инициализованых областей памяти на диск и в следующий раз запускать с этого места, опуская процес сборки програмы. Желательно исполнять инициализиционный код ещё на этапе компиляции.
Нужны также "ленивые вычисления" - апаратная поддержка *невыполнения* кода, если от него ничего не зависит. Процесоры уже делают предсказание ветвлений и прочую фигню - нужно облегчить им эту задачу.
>Покажи что-то лучшее из универсальных языков.C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является универсальным языком. К тому же для него на порядки меньше библиотек, чем для Си и Си++. И даже относительно простая стыковка с C не особо спасает Java.
> Ява вобрала в себя лучшее из
>Си и Обьектного Си, откинув в сторону проблематичные участки."Откинув в сторону"? "Проблематичные участки"?
Если говорить о Java как об универсальном языке, то:
Никто ведь не заставляет начинающего пользоваться всеми возможностями Си++, которые он оценит только, став профессионалом. Sun порезали всё самое полезное в Си/Си++, выкинув шаблоны (и заодно стандартную библиотеку C++, в том числе std::vector и std::map [аналогов которых в Java не было до Java 6]), препроцессор, операции с указателями, множественное наследование и т.д., без которых создание больших систем становится значительно сложнее, а из-за усложнения алгоритма появляются неизбежные тормоза и излишний расход памяти. Лучше бы добавили что-то к Си/Си++. Вот это было бы круто. Страуструп (создатель Си++) ведь придумал очень... очень гибкую вещь. Фактически сам язык не изменялся более 10 лет, и тем не менее ни чуть не устарел.
> Процесоры уже делают предсказание ветвлений и прочую фигню - нужно облегчить им эту задачу.
Используй Си/Си++ (возможно, в горячих участках вместе с Ассемблером) и читай рекомендации по оптимизации. Если тебе нужно поднять производительность на порядки, то неизбежен пересмотр алгоритма.
> 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
Анонимус, сравни расход памяти и скорость обращения к элементу вектора из миллиона элементов по одному байту. Всё тобой перечисленное совсем не то же самое, что std::vector и std::map.
Начиная с jdk1.2 Vector переписали, к тому же методы в нем синхронизованы. От того и тормоза. Нужна скорость, пользуем ArrayList. Но он появился ну никак не в 6-й версии. Гораздо раньше.
В Java вектор хранит ссылки на _объекты_, а в C++ - сами объекты. Т.е. накладные расходы на хранение 1 байта в векторе C++ практически равны 0. В Java нужно хранить объект, на хранение которого нужно как минимум 8 байт + ссылка на объект в самом векторе (как минимум 4 байта), т.е. в сравнении с C++ разница в хранении простых типов данных как минимум на порядок.
> в сравнении с C++ разница
>в хранении простых типов данных как минимум на порядок.http://java.sun.com/j2se/1.4.2/docs/api/java/nio/ByteBuffer....
>> в сравнении с 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, имеющими интерфейс Си, коих большинство.
>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 не поддерживает динамический размер, в отличие от 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 без написания дополнительного кода :)
>Слабое утешение, для тех, кто знаком с мощью Си++ и его стандартной
>библиотеки.Для C++ есть что-либо подобное системе управления жизненным циклом приложения Apache Maven?
>>Слабое утешение, для тех, кто знаком с мощью Си++ и его стандартной
>>библиотеки.
>
>Для C++ есть что-либо подобное системе управления жизненным циклом приложения Apache Maven?
>Maven - это помесь make с apt-get-ом и deb/rpm. Нашел чем хвастатся. При интеграции с линуксом с ним больше проблем чем пользы.
>При интеграции с линуксом с ним больше проблем чем пользы.А что, позвольте спросить, у вас вызвало затруднение при интеграции Maven в систему, прописывание переменной окружения M2_HOME или изменение пути к локальному репозиторию?
>А что, позвольте спросить, у вас вызвало затруднение при интеграции Maven в
>систему, прописывание переменной окружения M2_HOME или изменение пути к локальному репозиторию?
>У меня вызывает проблемы наличие этого локального репозитория. У меня уже есть система управления пакетами, и еще одна мне не нужна.
Мавен есть в пакетах и с его установкой проблем не возникает. Проблемы возникают с интеграцией еще одного локального велосипеда. Мавен нарушает первую заповедь юникса - делай что-то одно.
>>>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.
С помощью vector.data() можно получить указатель на внутренний буфер вектора, далее обработать данные вектора в стиле Си, используя полученный указатель, потом вернуться к работе с вектором в стиле Си++, используя все прелести std::vector.
Ну дык о чем и речь!А то вон выше по треду утверждают что объект для счетчика цикла вместо инта - цикл ничуть не затормозит :) Жабщики такие жабшики! :)
При этом прошу заметить - я ничего не имею против Java когда на ней делают че нить типа серверной части ERP\CRM\LA\BPA - я даже обоими руками за!
>>Покажи что-то лучшее из универсальных языков.
>
>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/bashjavac *.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 или заморозка рабочего процеса для переноса на другую машину.
Про пересмотр алгоритма учат ещё в школе.
>[оверквотинг удален]
>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 и книги Криса Касперского.
>Под мобильники крупные системы не пишут.Да ну?
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)
>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 не пригодилось пока. Потратить
>>несколько лет чтобы выиграть несколько секунд - спасиба за подсказку. :-/
>
>Под мобильники крупные системы не пишут.А часть крупной системы под мобилку писать можно?
>>> Если тебе нужно поднять производительность на порядки, то неизбежен пересмотр алгоритма.
>>
>>Поднять производительность можно только уменьшая количество выполняемого кода и приоритизируя его.
>
>Для Си это неверно. В Си в половине случаев для ускорения алгоритма
>приходится увеличивать количество кода.Ну и я о том же.
>C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является универсальным языком. К тому же для него на порядки меньше библиотек, чем для Си и Си++. И даже относительно простая стыковка с C не особо спасает Java.Тесты говорят об обратном: http://kano.net/javabench/data
Количество СТАНДАРТНЫХ библиотек Java описывается вот этими спецификациями: http://jcp.org/en/jsr/all
вот так медленно и постепенно придём к языку noob
С ума сойти. Язык ещё в альфа-версии, "You can't code anything interesting in Noop yet", но о нём уже раззвонили, как же, ведь это же Google!Вот когда хотя бы релиз транслятора будет, тогда и стоило бы говорить о Noop.