LINUX.ORG.RU

Google разрабатывает язык Noop для замены Java

 ,


1

0

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

Noop говорит ДА:

  • Внедрению зависимостей в языке
  • Тестируем ост
  • Неизменяемости
  • Синтаксису направленному на улучшение читабельности кода
  • Никогда не устаревающей документации
  • Свойствам, сильной типизации и разумной современной библиотеке

Noop говорит НЕТ:

  • Любой статике
  • Наследованию (subclassing)
  • Примитивам
  • Ненужным шаблонам

Исходные коды доступны под Apache Licence 2.0

>>> Google urges developers to get in loop with Noop

★★☆☆

Проверено: Shaman007 ()
Ответ на: комментарий от proton

>Why?

Ну, обычно это бывает при крайней степени ортодоксальности. Сперва люди отбрасывают множественное наследование, потом - наследование вообще. Я сперва не понимал, как можно вообще без множественного наследования жить и очень матерился на этот счёт. Даже совсем недавно, кстати... Вот: http://www.linux.org.ru/view-message.jsp?msgid=2041488

Потом [вынужденно] проникся и понял, что если возникает необходимость в множественном наследовании - то в 99.9% случаев это ошибка в дизайне. Когда до этого допёр и научился обходить этот момент (почти всегда решается рефакторингом, выносом повторяющейся в разных классах части в отдельный класс-механизм), код стал в ряде случаев заметно компактнее, прозрачнее и надёжнее. Одновременно с пониманием этого механизма понял, как обходиться и без наследования вообще... Правда, не принял этот подход, так как часто при наследовании реально экономится многое. Но если когда-то у меня уровень наследования доходил нередко до 4-6 уровней, то сейчас обычно 2-3 уровня. При том, что, повторюсь, и код стал компактнее, и ошибки сложнее допустить :)

KRoN73 ★★★★★
()

А мне нравится. Почти со всем согласен. Только насчет "No facility for statics", наверное не соглашусь. Статические методы - да, но мне кажется что статические переменные имеют право на существование...

anonymous
()

> Semicolons and parenthesis required

Фу. Питон и руби ничему не научили.

> Has properties

Разумеется.

> Injection

Надо покурить, сходу неясно.

> Strong inferred typing

Разумеется.

> Avoid null, Types shouldn't allow null value by default

ДА!!!!

> Lots of useful literals!

Молодцы.

yk4ever
()
Ответ на: комментарий от anonymo_use

Да, только собственного языка и не хватало гуголу. Не удивлюсь, если на этом языке «Hello, World!» запишется как:

Ъ, что ли? :) Там полно примеров.

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;
  }
}

Короче, та же Java :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> А что это означает? Растолкуйте...

Это значит, что тип создаваемой переменной не указывается программистом явно (int x = 2), и не присваивается динамически, а угадывается компилятором исходя из типа rvalue. В идеале угадываются ещё и типы в сигнатурах методов.

"Разумеется" - потому что это наиболее оптимальный подход для серьёзных проектов, если компилятор его может осилить. Явная статическая типизация - это маразм, а динамическая - увы, багодром.

yk4ever
()

Я всегда знал, что Java устарела... Стала артефактом. И скоро найдется тот кто перешибет ей хребет. Ну будем считать это первой попыткой!

valich ★★★
()
Ответ на: комментарий от valich

> И скоро найдется тот кто перешибет ей хребет. Ну будем считать это первой попыткой!

"Это не борьба, и это не результат" (c)

tailgunner ★★★★★
()
Ответ на: комментарий от KRoN73

> Короче, та же Java :)

С блэкджеком и шлюхами.

Это пипец какой-то, сколько по миру бродит разных клонов жабы, различающихся только набором налепленных шильдиков и погремушек. Ну ладно ещё C# и F# как-то осмысленны, в майкрософте умные люди сидят. Scala и Nemerle тоже какую-то идею имеют. Но Noop крайне сомнителен: непонятно, зачем спасать ООП-парадигму какими-то косметическими костылями, она уже выдала всё, что могла.

yk4ever
()
Ответ на: комментарий от yk4ever

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

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

KRoN73 ★★★★★
()
Ответ на: комментарий от valich

> Я всегда знал, что Java устарела... Стала артефактом. И скоро найдется тот кто перешибет ей хребет.

Ээ, товарищ. Жабо - великий уравнитель. Это более-менее сносный язык, лишённый кошмаров C++ и перла, легко доступный для понимания и хорошо обеспеченный библиотеками и инструментарием. Он нравится бизнесу, он нравится кодерам-середнячкам, он показал свою приемлемость для решения ряда задач.

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

yk4ever
()
Ответ на: комментарий от Gukl

> Именно этому они и научили :)

Херню говорите. С высоты многолетнего опыта сообщаю: со скобочным синтаксисом куда больше проблем, чем с питоновским.

yk4ever
()
Ответ на: комментарий от KRoN73

> JavaScript прекрасно живёт без semicolons

Ну там всё достаточно замороченно. Я когда переводил стандарт ECMA-262, у меня голова кругом шла от тамошних "здесь поём, здесь не поём, здесь рыбу заворачивали". Всё-таки с браузерами шутки плохи, лучше пооднозначнее писать.

yk4ever
()
Ответ на: комментарий от yk4ever

>Ну там всё достаточно замороченно.

Так я ж не про весь язык в целом (а вкусностей там дофига, а то, что у разработчиков трансляторов голова болит - прикладного программиста в наше время почти не колышит), а конкретно про подход к разделению операторов. Конец строки разделения не требует. В смысле - он сам разделитель, если оператор полностью закрыт. Это и трансляцию не сильно усложняет, и ни на что другое, вроде, не влияет.

KRoN73 ★★★★★
()
Ответ на: комментарий от klauzd

А што не так? Я плакалъ весь. http://webplanet.ru/news/life/2009/09/18/tsyk.html Там специалистов ТЫСЯЧИ!

Олсо, д0/\б0ёбы уже проникли в ВПК http://www.news2.ru/story/192335/ и не могут элементарные микросхемы наклепать, которые в США в 70-е годы делать научились. Вот это я понимаю Роснано!

Karapuz ★★★★★
()
Ответ на: комментарий от yk4ever

> Это значит, что тип создаваемой переменной не указывается программистом явно (int x = 2), и не присваивается динамически, а угадывается компилятором исходя из типа rvalue.

Ага, (var x = 2) из C#. Согласен, читается лучше.

anonymous
()
Ответ на: комментарий от valich

>Ну будем считать это первой попыткой!

Попытка уже из второй дюжины.

Karapuz ★★★★★
()
Ответ на: комментарий от KRoN73

Это что ж за народ такой, который заморачивается по поводу синтаксиса? Уж таких повернутых на цацках человеков вообще не надо к программированию подпускать. Или вы путаете синтаксис и семантику?

anonymous
()
Ответ на: комментарий от yk4ever

>Все понимают, что жаба примитивна и несовременна. Но её "хребет" - не технологический, и может быть перешибён не технологиями программирования, а только теми же организационными мерами, что возвели её на пьедестал.

Все понимают, что SQL примитивен и стар. Но его хребет не технологический и может быть перешибён не новыми технологиями хранения данных, а теми же маркетинговыми и организационными мерами, что возвели SQL СУБД на пьедестал

Похоже?

Karapuz ★★★★★
()
Ответ на: комментарий от anonymous

>Это что ж за народ такой, который заморачивается по поводу синтаксиса?

Процентов 90 основной массы программистов :)

>Или вы путаете синтаксис и семантику?

Возможно. В чём в этом контексте разница?

KRoN73 ★★★★★
()
Ответ на: комментарий от yk4ever

> Ээ, товарищ. Жабо - великий уравнитель. Это более-менее сносный язык, лишённый кошмаров C++ и перла, легко доступный для понимания и хорошо обеспеченный библиотеками и инструментарием. Он нравится бизнесу, он нравится кодерам-середнячкам, он показал свою приемлемость для решения ряда задач.

Жаба - тормозная хуетень, которая ещё работает через интерпретатор нихуёвого размера. Руки у тебя из жопы, раз С++ не осилил. Про перл молчу - не пробовал.

Итого - преимуществ у жабы перед С++ реальных нет, есть только виртуальные, типа "писать на жабе песдато", "Я песдатый быдлокодер на песдатой жабе". Правда, вроде с портированием на жабе проблем меньше, но правильно написанный код на С/С++, не сильно завязанный на особые системные плюшки (типа DirectX'a), портировать не так уж и сложно, проверено на практике. Но если быдлокодерам не под силу, пусть пользуются тормозной жабой.

anonymous
()
Ответ на: комментарий от anonymous

>правильно написанный код на С/С++, не сильно завязанный на особые системные плюшки (типа DirectX'a), портировать не так уж и сложно, проверено на практике

ололо, толстячок.... больших проектов не делал?

если, к примеру, к графике добавляются потоки и процессы, то всё становится куда не так прозрачно и приходиться часть мейнтейнить по 2-3 версии системно-зависимых кусков кода... что есть очень большое зло

и да, мы говорим не о server-side приложениях, которые в этом смысле проще...

shty ★★★★★
()

по теме: чисто велосипедоизобретение и велосипедостроение...

Неужели не хватило Jython, к примеру?

Итак, вопрос: зачем плодить велосипеды типа УГ, чтобы потешить своё ЧСВ?

Лучше бы дорабатывали Python.

shty ★★★★★
()
Ответ на: комментарий от KRoN73

> При том, что, повторюсь, и код стал компактнее, и ошибки сложнее допустить :)

для этого есть tdd

shty ★★★★★
()
Ответ на: комментарий от anonymous

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

Про тормозную жабу уже позорно в приличном обществе позориться Читай http://blogs.azulsystems.com/cliff/

Karapuz ★★★★★
()
Ответ на: комментарий от anonymous

>> Это значит, что тип создаваемой переменной не указывается программистом явно (int x = 2), и не присваивается динамически, а угадывается компилятором исходя из типа rvalue.

>Ага, (var x = 2) из C#. Согласен, читается лучше.

примеры из Python:

x = 120

x_str = 'trololo'

какие проблемы?

shty ★★★★★
()
Ответ на: комментарий от yk4ever

>Явная статическая типизация - это маразм, а динамическая - увы, багодром.

ну во-первых Вы занимаетесь софизмом и оба Ваших утверждения неверны

а во-вторых выход-то какой?

shty ★★★★★
()
Ответ на: комментарий от Karapuz

> Все понимают, что SQL примитивен и стар. ... Похоже?

Угу. SQL тоже плох - иначе бы в последнее время не возникла такая бешеная мода на ORM. Ну и объектные базы тоже помаленьку подкрадываются, спрос на ту же Cache в последнее время наблюдается.

С эскуэлем ситуация примерно как с жабоскриптом - это данность, которую приходится принимать, но вокруг которой можно навертеть свои обёртки. ЯП общего назначения - это уже несколько иное, там простора для фантазии уже побольше.

yk4ever
()
Ответ на: комментарий от anonymous

>Это что ж за народ такой, который заморачивается по поводу синтаксиса?

тот народ которому на это писать потом...

синтаксис важен, поверьте

shty ★★★★★
()
Ответ на: комментарий от Karapuz

> Про тормозную жабу уже позорно в приличном обществе позориться

жаба вроде как и шустрая( судя по бенчмаркам ), но приложения на ней в большей своей части жутко тормознутые - парадокс :)

lester ★★★★
()
Ответ на: комментарий от Gukl

> Когда-то я думал, что прстые типы делать ссылками - верх идиотизма, достигнутый нетолько Питоном, но и отраслью вообще. Портом появился Руби с проыми-типами объектами.

В питоне тоже всё - объекты.

ntp
()

НупЪ.. Забавное название

NOOP это команда ничего не делать, тоже символично

anon000
()
Ответ на: комментарий от anonymous

> Жаба - тормозная хуетень,

4.2 Не тормозит. Скорость вычислений примерно равна сишной.

> которая ещё работает через интерпретатор

4.2 Не интерпретатор. Учите матчасть.

> нихуёвого размера.

Да, это есть. И это одна из основных проблем жабы.

> Руки у тебя из жопы, раз С++ не осилил.

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

> Итого - преимуществ у жабы перед С++ реальных нет,

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

yk4ever
()

больше языков для JVM, хороших и разных. школота не может никак уяснить что JVM - прямой конкурент .NET. а победит .NET - и полетит линух с половины серверов как здрасте.

>жаба вроде как и шустрая( судя по бенчмаркам ), но приложения на ней в большей своей части жутко тормознутые - парадокс :)

а за это скажите спасибо жителям страны где якобы придумали шахматы и цифры (не верю), которым давно пора законодательно запретить писать код.

gigabito
()
Ответ на: комментарий от shty

> какие проблемы?

Да проблем с динамической типизацией две: 1) очепятки и подобные тривиальные ошибки не ловятся на этапе компиляции 2) гораздо труднее использовать JIT; практически невозможно достичь скорости, сравнимой с C

yk4ever
()
Ответ на: комментарий от lester

Не знаю, у меня обычно Azurues не тормозит и быстро забивает канал 1300кб/с ;)

Karapuz ★★★★★
()
Ответ на: комментарий от shty

> ну во-первых Вы занимаетесь софизмом и оба Ваших утверждения неверны

Я занимаюсь обобщением своего опыта. Оба моих утверждения верны.

> а во-вторых выход-то какой?

Блин, ну с чего мы начали разговор-то? Выведение типов. Оно выход и есть.

yk4ever
()
Ответ на: комментарий от shty

> если, к примеру, к графике добавляются потоки и процессы, то всё становится куда не так прозрачно и приходиться часть мейнтейнить по 2-3 версии системно-зависимых кусков кода... что есть очень большое зло

Вот ты и толстый. Потоки и процессы на вантусе и на линупсе очень похожи, переписать одно на другое вообще просто, надо тока руки из жопы на плечи пересадить, и голову заодно. А если у тебя при этом получается говнокод, может проблема в тебе?

anonymous
()
Ответ на: комментарий от gigabito

> а победит .NET - и полетит линух с половины серверов как здрасте.

Ну и пусть полетит, вам что, жалко? :] Если на рынке победит технически, а не конъюнктурно хорошее решение - это было бы огромное счастье. Увы, такое случается редко.

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

yk4ever
()

Ну и хорошо. Языки надо делать. Хорошие языки выживают, а плохие сами отмирают.

smh ★★★
()
Ответ на: комментарий от smh

>Хорошие языки выживают, а плохие сами отмирают.

Не уверен :) Т.е., уверен, что не :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> Потоки и процессы на вантусе и на линупсе очень похожи,

Угу, канееееешна. Особенно похож fork() на винде, ага.

> надо тока руки из жопы на плечи пересадить, и голову заодно.

Т.е. надо просрать кучу времени высокооплачиваемых специалистов, только чтобы написать на C++, а потом полгода трахаться с отладкой дедлоков и утечек памяти. О дааааа.

Эхехе, красноглазые дети, какие ж вы в суждениях незамутнённые-то...

yk4ever
()
Ответ на: комментарий от smh

> Хорошие языки выживают, а плохие сами отмирают.

Эхехе. Ситуация куда сложнее. В общем случае выживают те, в которые больше вложено :]

yk4ever
()
Ответ на: комментарий от yk4ever

>Во-вторых, цена лицензий на серверную винду - это тоже достаточно ощутимый барьер для стартапов

где вы видели стартапы на JVM? сначала набросают на LAMP потом за голову хватаются как только >10 серверов ставить пора.

единственный нормальный "стартап" это linkedin. но уж там могли и винду купить и SLES/RHEL/OEL если надо. привыкли стартапить из говна и палок.

gigabito
()
Ответ на: комментарий от yk4ever

> Т.е. надо просрать кучу времени высокооплачиваемых специалистов, только чтобы написать на C++, а потом полгода трахаться с отладкой дедлоков и утечек памяти. О дааааа.
> Эхехе, красноглазые дети, какие ж вы в суждениях незамутнённые-то...


вы либо толстый тролль, либо неуч

lester ★★★★
()
Ответ на: комментарий от yk4ever

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

Поставим вопрос по другому? нахрена нужна жаба, если есть C++? По педивикии - java, первые версии - 1990-1995 примерно, С++, первые версии - начало 1980-ых. Нахрена нужно было такое поделие, когда уже был C++?

anonymous
()
Ответ на: комментарий от yk4ever

>Т.е. надо просрать кучу времени высокооплачиваемых специалистов, только чтобы написать на C++, а потом полгода трахаться с отладкой дедлоков и утечек памяти. О дааааа.

Я же говорил, достань руки из жопы и у тебя не будет дедлоков и будет минимум утечек памяти. Но судя по всему, с утечками памяти бороться ты не умеешь, и поэтому тебе нужен такой костыль, как Garbage Collector, который позволяет быдлокодерам не заботиться об освобождении памяти, а заниматься исключительно говнокодом. Нормальный код высвобождает ровно столько памяти, сколько забирает. Конечно бывают и сложные случаи, которые проявляются только с бубном под полной луной после жертвоприношения девственниц, но если у тебя такие клинические случаи получаются, что приходится "трахаться с отладкой полгода", то тебе дорога в негрософт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.