-------------------------------
Что такое Noop?
Noop (своеобразное "ничего", как инструкция NOP в ассемблере) - это новый экспериментальный язык программирования, взявший всё лучшее из языков старых и новых, впитавший в себя лучшие находки индустрии и отринувший худшие, в том числе и касающиеся синтаксиса. Noop изначально предназначен для запуска на виртуальной машине Java (JVM).
Кто стоит за Noop?
Noop - это совместный проект сообщества единомышленников, состоящего из программистов и сочувствующих (список на сайте). Мы собрались из нескольких компаний, включая, но не ограничиваясь, Google.
Мировозрение Noop.
Разработчики Noop прекрасно знают о лучших достижениях и чудовищных промахах в мире программного обеспечения, разработки ПО и эволюции языков программирования. Noop будет поддерживать прекрасное и бороться с чудовищным настолько хорошо, насколько это возможно. Например:
Noop поощряет:
- Dependency injection (внедрение зависимости) так называемые внешние зависимости вновь созданного объекта;
- Testability (тестируемость) - шов между между каждой парой классов;
- Immutability (неизменяемость);
- Читаемость кода важнее любой синтаксической функции;
- Документирование, которое позволяет всегда иметь актуальную документацию;
- Properties, strong typing, современная и разумная stdlib.
Noop порицает:
- Статику, в любом ее проявлении (статические методы и т.д.);
- Реализацию наследования (subclassing);
- Примитивы;
- --Ненужную-- шаблонизацию.
Почему Noop?
Dependency injection (внедрения зависимости) изменили представление о том, как разрабатывать программное обеспечение. Spring догнал EJB в сфере коммерческих приложений, и Guice и PicoContainer сегодня являются важной частью хорошо написаных и спроектированных приложений.
Автоматизированное тестирование, в особенности Unit Testing, также является важнейшим элементом построения надежного программного обеспечения, без труда поддерживаемого и легко масштабируемого. Любой приличный разработчик программного обеспечения обязан писать тесты, лучшие из них автоматизированы и охватывают большую кода.
Noop - новый язык программирования, который выполняется на виртуальной машине Java, и в своей исходной форме весьма схож с Java. Смысл сего мероприятия в том, чтобы построить систему зависимостей и тестирования в языке с самого его зарождения, а не полагаться на сторонние библиотеки, как это сейчас делают все другие языки.
Неизменяемость и минимальная зона видимости переменных воодушевляют на использование final/const поведения по умолчанию и обеспечивают легкий доступ к функциональному стилю программирования. Тестируемость предполагается путем предоставления возможности внедрения зависимостей (Dependency injection) на уровне языка, а также компактным синтаксисом конструкторов внедрения зависимостей.
Запланировано три пути использования исходных файлов Noop:
- Java транслятор: транслирует Noop код в исходные коды Java. Позволяет вам использовать Noop без преобразования вашего текущего кода, но не все возможности рантайма языка поддерживаются;
- Интерпретация: читает и исполняет код Noop через интепретатор. Медленно, зато будет иметь интерфейс командной строки;
- Компиляция: компиляция непосредственно в байткод Java.
-------------------------------
Кто перейдет по всем ссылкам в переводе и прочитает все статьи, тому +10 к скиллу "Наука".
Традиционный, но ни о чем не говорящий, HelloWorld.noop:
import noop.Application;
import noop.Console;
class HelloWorld(Console console) implements Application {
Int main(List args) {
String s = "Hello World!";
console.println(s);
return 0;
}
}
На выходных более подробно поковыряюсь и что-нибудь еще плохое-хорошее расскажу.
Итак, зачем и кому оно нужно? Будет нужно? Нужно ли?
Я тут размышлял 10 минут об этом, ничего здравого мне на ум не приходит. Разве что (судя по интерпретации и компиляции в Java код / байткод) Google готовит запасной вариант на случай «новая, вкусная, но немножко дорогая и ограниченная патентами Java от Oracle!».

0 коммент.:
Отправить комментарий