The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Noop - новый язык для виртуальной машины Java

17.09.2009 20:33

Разработчики Google выпустили новый язык Noop, предназначенный для запуска на виртуальной машине Java (JVM). Авторы проекта описывают Noop как "новый язык, взявший все лучшее и отбросивший все худшее из современных и старых языков, в том числе и в области синтаксиса". Он построен на основе объектно-ориентированных концепций "внедрения зависимости" (передача объекту ссылки на внешнюю зависимость при инициализации) и неизменяемости (Immutability). Язык имеет легко читаемый код, но строгую типизацию. Исходные тексты Noop распространяются под лицензией Apache.

В Noop отсутствуют:

  • статические методы;
  • наследование;
  • примитивы.

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

  • трансляция в исходные тексты на языке Java;
  • интерпретация Noop кода на лету;
  • преобразование в совместимый с JVM байткод.


  1. Главная ссылка к новости (http://www.h-online.com/open/N...)
  2. Инструкция с описанием основ использования Noop
Автор новости: wrnews
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/23459-java
Ключевые слова: java, noop
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Iv945n (ok), 21:24, 17/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Noop не реализует: статические методы, наследование и примитивы.

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

     
     
  • 2.13, rimidal (ok), 22:45, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    +1

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

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

     
     
  • 3.18, Поросеночек (?), 23:33, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Да уж счетчик в форе это теперь экземпляр класа.

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

     
     
  • 4.21, rimidal (ok), 23:59, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    я имел в виду:

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

     
  • 3.27, аноним (?), 00:48, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >счетчик в форе это теперь экземпляр класа. Просто жесть.

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

     
     
  • 4.31, СуперАноним (?), 06:30, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Извините, но объектно-ориентированные концепции и отсутствие наследования, это как сочетается?
     
     
  • 5.40, Arsenicum (?), 10:35, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "Внедрение зависимостей" полная замена наследования. Вопрос в том как привыкнуть к такому и насколько это удобно. Time will tell.
     
  • 4.54, Warhead Wardick (?), 18:25, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Если там нет наследования и виртуальных функций, оверхеда не будет, скорость такая-же, как с интом, зато возможность методы и возможность наследования.

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

     

  • 1.5, IGX (?), 21:55, 17/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    От разработчиков Гугла было бы больше пользы, если бы они решали реальные задачи. Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java. Результаты их работы были бы намного более ценны. А создавать новый язык... которых и так наплодилось видимо-невидимо... Не скажу, что это плохо... но распылять драгоценные ресурсы на необязательные вещи на мой взгляд нерационально, тем более, что нормальных разработчиков в мире по пальцам пересчитать. А работы по программированию в мире, даже исходя из текущих задач, хватит еще на десятки лет вперед, не считая того, что всё постоянно движется, и постоянно появляются новые задачи.
     
     
  • 2.6, iZEN (ok), 22:07, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Раз уж им интересна работа с языками, то лучше бы пилили Java или развивали C++, помогая улучшать GCC или создавая/улучшая библиотеки C/C++/Java.

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

     
     
  • 3.14, FUKEDITOR (?), 22:56, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > GCC слишком перегружен. Хорошо, что появился LLVM.

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

     
     
  • 4.22, marv (?), 00:10, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    только без паники: по словам разрабов - это временно.
     
     
  • 5.28, User294 (ok), 01:59, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "нет ничего более постоянного чем временное".

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

     
  • 3.39, Йух (??), 10:21, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Простите, чем это он перегружен? ЛЛВМ не быстрее гцц, а то и медленнее. :\
     
     
  • 4.45, vitek (??), 13:46, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • –2 +/
    он видимо имел ввиду, что он перегружен всякими бзд-системами, в которых им приходиться пользоваться...
    а для таких либералов - это как серпом по ядрам.
     
     
  • 5.62, vitek (??), 21:38, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    столько показателей своей правоты я давно не получал. :-DDDDDDDDDDDDDD
     
  • 2.7, usr (?), 22:08, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Угу. Учитывая непонятки с Sun, могли бы сделать "Java 3", из которой бы выбросили весь legacy груз. По аналогии с Python. Тем более, применять есть где - свой же Android.
     
     
  • 3.34, Александр (??), 09:03, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > могли бы сделать "Java 3", из которой бы выбросили весь legacy груз

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

     
  • 3.47, vitek (??), 14:23, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Учитывая непонятки с Sun, могли бы сделать "Java 3",

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

     
  • 2.12, Voviandr (??), 22:42, 17/09/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >От разработчиков Гугла было бы больше пользы, если бы они решали реальные
    >задачи. Раз уж им интересна работа с языками, то лучше бы
    >пилили Java

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

     
     
  • 3.35, Александр (??), 09:04, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем они ей? Там и без делегатов все нормально делается.
     
     
  • 4.44, Voviandr (??), 13:27, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    делегаты - это реализованный в языке паттерн проектирования "observer".
    паттерны очень хороши для тех, кто умеет ими пользоваться и знает, как и где их применять.
    а анонимный класс - это гемор. он неудобен.
    также неплохо бы добавить properties в стиле c#.
    опять-таки - реализация паттерна "proxy".
    очень нужная и полезная.
     
  • 3.37, uZver (??), 10:06, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > добавили бы делегаты - цены  тогда яве бы не было .

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

     

  • 1.8, Аноним (-), 22:11, 17/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    в Android и так не обычная а специфическая реализация Java, не от Sun
     
     
  • 2.38, uZver (??), 10:07, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • –2 +/
    да ладно ;)

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

     
     
  • 3.43, Volodymyr Lisivka (?), 13:18, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >да ладно ;)
    >
    >там обычная java только без swing, а со своим GUI-подходом. Остальное это
    >дополнительные либы.

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

     
     
  • 4.69, uZver (??), 10:44, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Там регистровая виртуальная машина Dalvik, которая не совместима со стековой виртуальной машиной от Сан. jar-ки надо перекомпилировать сначала, прежде чем запускать под Dalvik-ом. Трудозатраты сравнимые с компиляцией в родной код при помоши gcj.

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

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

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

     

  • 1.10, pro100master (ok), 22:31, 17/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >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

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

     
  • 1.11, rimidal (ok), 22:40, 17/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сколько уже можно плодить виртуальные машины и интерпритаторы? Может хватит? Java как язык довольно совершенен. Единственный на мой взгляд недостаток так это апетиты по памяти у JVM. Лучше бы саму виртуальную машину пилили.
     
     
  • 2.36, andr.mobi (??), 09:55, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Java как язык довольно совершенен.

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

     
     
  • 3.42, Volodymyr Lisivka (?), 13:10, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > IMHO джава - уродец

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

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

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

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

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

    Что нужно?

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

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

     
     
  • 4.48, IGX (?), 15:14, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Покажи что-то лучшее из универсальных языков.

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

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

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

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

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

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

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

     
     
  • 5.49, anonumous (?), 17:02, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > 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

     
     
  • 6.50, IGX (?), 17:13, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Анонимус, сравни расход памяти и скорость обращения к элементу вектора из миллиона элементов по одному байту. Всё тобой перечисленное совсем не то же самое, что std::vector и std::map.
     
     
  • 7.51, anonymous (??), 17:35, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Начиная с jdk1.2 Vector переписали, к тому же методы в нем синхронизованы. От того и тормоза. Нужна скорость, пользуем ArrayList. Но он появился ну никак не в 6-й версии. Гораздо раньше.
     
     
  • 8.53, IGX (?), 18:10, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    В Java вектор хранит ссылки на _объекты_, а в C - сами объекты Т е накладные... текст свёрнут, показать
     
     
  • 9.55, Volodymyr Lisivka (?), 18:44, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    http java sun com j2se 1 4 2 docs api java nio ByteBuffer html ... текст свёрнут, показать
     
     
  • 10.58, IGX (?), 19:00, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ByteBuffer не поддерживает динамический размер, в отличие от std vector Произв... текст свёрнут, показать
     
     
  • 11.60, Volodymyr Lisivka (?), 19:10, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не проблема - сделаем Тесты - в студию java util Vector, java util ArrayList, ... текст свёрнут, показать
     
     
  • 12.61, IGX (?), 19:52, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Пилите, пилите Тестирование - это твоё домашнее задание Слабое утешение... текст свёрнут, показать
     
     
  • 13.65, iZEN (ok), 00:47, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для C есть что-либо подобное системе управления жизненным циклом приложения Ap... текст свёрнут, показать
     
     
  • 14.66, Volodymyr Lisivka (?), 00:53, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Maven - это помесь make с apt-get-ом и deb rpm Нашел чем хвастатся При интегра... текст свёрнут, показать
     
     
  • 15.70, iZEN (ok), 19:53, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    А что, позвольте спросить, у вас вызвало затруднение при интеграции Maven в сист... текст свёрнут, показать
     
     
  • 16.71, Volodymyr Lisivka (?), 00:09, 20/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    У меня вызывает проблемы наличие этого локального репозитория У меня уже есть с... текст свёрнут, показать
     
  • 13.67, Volodymyr Lisivka (?), 01:13, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Ты догадываешся, как изменяется размер в std vector или тебе подсказать про mem... текст свёрнут, показать
     
  • 10.59, IGX (?), 19:05, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    С помощью vector data можно получить указатель на внутренний буфер вектора, да... текст свёрнут, показать
     
  • 9.57, Warhead Wardick (?), 18:58, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык о чем и речь А то вон выше по треду утверждают что объект для счетчика ц... текст свёрнут, показать
     
  • 5.52, Volodymyr Lisivka (?), 18:09, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    cat HW java public class HW public static void main final String args ... большой текст свёрнут, показать
     
     
  • 6.56, IGX (?), 18:46, 18/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален 1 Много ли вы знаете скомпилированных gcj программ боле... большой текст свёрнут, показать
     
     
  • 7.64, iZEN (ok), 00:45, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Под мобильники крупные системы не пишут.

    Да ну?

    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)


     
  • 7.68, Volodymyr Lisivka (?), 01:31, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Еклипса Не всё гладко с gcc - там NullPointerException не принято бросать - лич... большой текст свёрнут, показать
     
  • 5.63, iZEN (ok), 00:38, 19/09/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >C/C++, хотя сферы применения C/C++ и Java не пересекаются. Java не является универсальным языком. К тому же для него на порядки меньше библиотек, чем для Си и Си++. И даже относительно простая стыковка с C не особо спасает Java.

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

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

     

  • 1.46, vitek (??), 13:47, 18/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот так медленно и постепенно придём к языку noob
     
  • 1.72, ximaera (?), 15:25, 21/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С ума сойти. Язык ещё в альфа-версии, "You can't code anything interesting in Noop yet", но о нём уже раззвонили, как же, ведь это же Google!

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру