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 ()
Ответ на: комментарий от gh0stwizard

http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm

L = range(50*1024*100)
del(L)

Python is still using more than 60 MB. Why isn’t the memory released?

It’s that you’ve created 5 million integers simultaneously alive, and each int object consumes 12 bytes. “For speed”, Python maintains an internal free list for integer objects. Unfortunately, that free list is both immortal and unbounded in size. floats also use an immortal & unbounded free list.

/…/ Do you really need a list containing 5 million integers? I never do ;-) Something like

for i in xrange(50*1024*100):  # note the "x" in "xrange"
     whatever
consumes a trivial amount of memory, because only two integers in the range are simultaneously alive at any point, and the free list makes reusing their space fast.

Как бы намекает, что отстрелить себе ногу можно на любом языке...

Lonli-Lokli ★★
()
Ответ на: комментарий от Ekin2008

> А вот твоя программа работает некорректно

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

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

> Ну, наверное, чтоб не трахаться с ручным управлением памятью

как я и говорил, быдлокодерам нужен костыль типа Garbage Collector, поскольку ручное управление памятью не осиливают. А так можно делать говнокод, не думая о памяти.

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

> Как бы намекает, что отстрелить себе ногу можно на любом языке...

Причем в правильных языках, с течением времени, возможностей для этого все меньше и меньше.

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

а зачем с чем-то бороться в каждом проекте снова и снова? нравится сам процесс? и тебе заказчик это оплачивает? тогда ты просто счастливчик по жизни; хотя, скорее, только на этой сайте такой речистый

P.S. Насчет "нормальный код высвобождает..." - ты проекты реальных размеров видел-то когда-нибудь?

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

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

>Браво. То есть утечки памяти неизбежны, даже когда руки на месте %)

утечки памяти не неизбежны, но как я говорил уже, от них никто не застрахован. И ещё не известно что хуже - пара маленьких утечек памяти (которые можно и исправить, если сильно надо будет), либо тормозной язык + тормозной Garbage Collector.

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

> Ну xrnge() же в более ранних версиях!

Это утечка абстракции, что не есть гуд. Слава яйцам, в третьей версии исправили.

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

> Программа работает некорректно

Ты ведь внимательно прочитал комментарии?

> /// @note result is undefined when (@p n)! > sizeof(unsigned) Так же и собеседников внимательно слушаешь?

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

Функция работает некорректно.

Функция работает корректно. Она вернула тебе совершенно корректный double. А вот твоя программа работает некорректно, потому что ты распечатал double с точностью, которой там не может быть.

baverman, согласись, что моя функция совершенна, а ты лох, а не тролль ;)

(Мне пора уходить, не могу следить за тредом.)

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

При всех плюсах Python3, обратная совместимость потеряна. Мне попадалось мнение что Python 3.x стоит рассматривать как похожий, но более другой язык.

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

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

К яве можно написать корректный транслятор в полном соотвествии со стандартом, который не зависнет при компиляции. В отличие от С++.

Там выкинули на корню хрень типа "знаете ли вы порядок вызова дестрокуторов предков при ромбовидном множественном наследовании?" и прочую муть, которую обожают спрашивать на собоседовани про С++.

Человек может дождаться завершения сборки проекта на Яве, не умерев от старости.

Там уменьшили возможности

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

> Там уменьшили возможности

... по отсрелу себе конечностей.

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

> Ты ведь внимательно прочитал комментарии?

Прости, но я как-то привык пользоваться корректными функциями, поведение которых разумно. И для использования которых не надо углубляться в детали реализации -- мне за это не платят.

Сможешь ли ты указать максимальное n, при котором ответ будет верен?

baverman ★★★
()
Ответ на: комментарий от Ekin2008
double get_infininty()
{
    return exp(1e10);
}

double factorial(unsigned n)
{
    double res = 1.;
    if(n <= 1)
        return res;
    else if (n > 300)
        return get_infininty();
    else
        while(n)
            res *= n--;
    return res;
}

<школота>накой там double? факториал же вроде должен и целый результат давать, и считаться только для натуральных чисел?</школота>

Lonli-Lokli ★★
()
Ответ на: комментарий от Ekin2008

> baverman, согласись, что моя функция совершенна, а ты лох, а не тролль ;)

Ну конечно, в том, что ПО работает неправильно, виноват клиент -- он не умеет им пользоваться. В этом суть C++ кунов, им кажется что они приобщились к истине и одномоментно стали непогрешимыми Д'Артаньянами.

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

> И ещё не известно что хуже - пара маленьких утечек памяти (которые можно и исправить, если сильно надо будет), либо тормозной язык + тормозной Garbage Collector.

Тормознутось (2-4x раза при Jit) -- детерменирована (известно, сколько стоит железо) а утечки памяти приводят к катастрофе на сервере в итоге. Господи, вам в вузе преподавал фанатик С++ или вы сами заразились?

Что касается скорости, то умельцы на С++ с конструкторами копировании на каждый чих напишут и медленее.

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

Вот странно.

Сколько пишу на C++, никогда не было такой уж борьбы с выделением/удалением памяти. Мне не слабо для объектов, создаваемых в main, написать удаление в том же main, а для остального в соответствующих местах - для локальных объектов при выходе из области видимости, для членов класса, например, в деструкторе класса.

Зато я знаю, что у меня в НУЖНОЕ время будет освобожден НУЖНЫЙ кусок памяти. Вы никогда не писали код при СИЛЬНО ограниченных ресурсах?(просьба не говорить, что тут нужен уже ассемблер, он не подходил для того проекта). Это заставляет относиться к ресурсам очень трепетно )

При этом я прекрасно понимаю разницу в применимости различных технологий.

grondek
()
Ответ на: комментарий от Lonli-Lokli

<школота>накой там double? факториал же вроде должен и целый результат давать, и считаться только для натуральных чисел?</школота>

Школота, double отличается от integer-типов, не только тем, что он способен представлять нецелые значения, но и тем, что в нем есть мантисса и порядок, и как следствие он может представлять большие числа. На i386 точность double выше, чем у int-а (мантисса длинее, чем 32 бита).

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

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

ха...

1) Ну-тко приведи мне аналог виндовых заданий (jobs) в линуксе, а то мож я уже чего пропустил?

2) Ви таки не знаете что потоки в линуксе - есть зашареные процессы? В винде же это суть разные сущности.

3) Представьте что у Вас под виндой ribbon есть, как Вы реализуете его под linux?

4) Практика показала что даже OpenGL работает сильно по разному под виндой и под линуксом, не верите?

Что, недостаточно пунктов?

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

> А если у тебя при этом получается говнокод, может проблема в тебе?

а кто говорил про говнокод, толстячок?

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

> Зато я знаю, что у меня в НУЖНОЕ время будет освобожден НУЖНЫЙ кусок памяти. Вы никогда не писали код при СИЛЬНО ограниченных ресурсах?

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

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

baverman, согласись, что моя функция совершенна, а ты лох, а не тролль ;)

Ну конечно, в том, что ПО работает неправильно, виноват клиент — он не умеет им пользоваться. В этом суть C++ кунов, им кажется что они приобщились к истине и одномоментно стали непогрешимыми Д'Артаньянами.

ПО работает правильно. Абсолютно правильно. Не падает в корку, не зависает, нет утечек памяти, тебе вернуло правильное значение. А ты с этим числом сделал противоестественную вещь, противную природе ;)

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

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

>толстячок, похоже, как раз ты

поразвёрнутее плиз, а то голословненько

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

> <школота>накой там double

Ты тоже не старше. Почему double не может представлять unsigned (конечно, если отвлечься от двоичного представления, в текущей задаче это допустимо)?

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

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

Вот такой убогий вариант пойдёт?!
for(i=1;i<n+1;i++) sum*=i;

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

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

скорость разработки проектов в разы выше... собственно всё

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

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

уважамый, Вы нихерена не поняли, вопрос не за качество, а за скорость... давайте уже подключайте моск

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

>При сильно ограниченных ресурсах писат надо на Си и только на Си (про асм молчим, как просили). Вы любо пришете не на С++, либо для нормальных ресурсов, либо у вас ООП головного мозга.

Вот почему-то я знал, что кто-нибудь об этом скажет )

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

> Вот почему-то я знал, что кто-нибудь об этом скажет )

Потому что нет ни С++ для микроконтроллеров, ни С++ в ядре ОС, да!

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

>> иметь более удобные возможности отладки

> какие?

Чёткий трэйсбэк и информация из рефлекшна.

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

> тебе вернуло правильное значение

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

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

>Кодер при таком обучении получается действительно плохой. А рассуждающий и понимающий основы инженер очень даже легко.

Так а чем такой инженер тогда должен заниматься?!

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

>> Она много всего подгружает, поэтому долго стартует

>зато нет возни с хедерами - да? ;)

путаете runtime и разработку... :))))

пора в школу?

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

>Потому что нет ни С++ для микроконтроллеров, ни С++ в ядре ОС, да!

Ещё там его не хватало! )

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

> врядли, у них есть классы, но нет наследования

Чем тогда классы лучше структур (ну кроме инкапсуляции)? Закапывайте.

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

> Ну-тко приведи мне аналог виндовых заданий (jobs) в линуксе, а то мож я уже чего пропустил?

Растолкуй, что есть вендовый job - может, и приведем.

> Ви таки не знаете что потоки в линуксе - есть зашареные процессы?

Это уже давно не совсем так. Или совсем не так - зависит от точки зрения.

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

> 1) Ну-тко приведи мне аналог виндовых заданий (jobs) в линуксе, а то мож я уже чего пропустил?

> 2) Ви таки не знаете что потоки в линуксе - есть зашареные процессы? В винде же это суть разные сущности.


> 3) Представьте что у Вас под виндой ribbon есть, как Вы реализуете его под linux?


> 4) Практика показала что даже OpenGL работает сильно по разному под виндой и под линуксом, не верите?


Ну сделай нужную тебе абстракцию. И если самому лень писать или не можешь то возми готовые библиотеки.

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

> Так а чем такой инженер тогда должен заниматься?!

Менять вам подгузники. И подчищать некорректные факториалы. Будь спокоен -- такая работа никогда не исчерпает себя.

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

> Когда нужно расширить функционал того или иного класса, не изменяя его код, используется простейший способ- наследование.

На самом деле, это требуется ОЧЕНЬ редко. Редко когда в предметной области случаются не-абстрактные "классы", которые имеет смысл "расширить".

> 2. Паттерн делегирования (разновидность копипаста)

Не скажите. Делегирование требует копировать куда как меньше. А если его ещё и поддерживать на уровне языка...

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

> Потому что нет ни С++ для микроконтроллеров,

Для некоторых микроконтроллеров и Си нет (или не было лет 10-15 назад).

> ни С++ в ядре ОС, да!

Какой именно ОС?

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

> врядли, у них есть классы, но нет наследования

Но интерфейсы есть, полагаю?

(Неужели я дождался смерти ООП в понимании 80-ых?)

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

> Для некоторых микроконтроллеров и Си нет (или не было лет 10-15 назад).

Автор просил не вспоминать сам.

>> ни С++ в ядре ОС, да!

> Какой именно ОС?

тех что во малоресурных системах. %)

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

Вообще, baverman поставил довольно непростую задачу.
Тот код, что был приведен выше, во-первых, на С написан, а во-вторых, дает неверный результат (проверьте в конце концов на калькуляторе!=)
Причем ясно, почему некорректный ответ.
По-хорошему, надо писать с использованием классов (мы же на С++ пишем-с?=), вводить класс для представления целого числа с очень большим числом десятичных разрядов, ну и далее по тексту... С использованием unsigned максимальное n будет 12 (если я не ошибаюсь и int 32 битный) =)

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

а тормозов всё больше и больше

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

> Прости, но я как-то привык пользоваться корректными функциями, поведение которых разумно. И для использования которых не надо углубляться в детали реализации -- мне за это не платят.

То есть ты не привык читать документацию? Из-за таких как ты в Израиле ломаются истребители.

> Сможешь ли ты указать максимальное n, при котором ответ будет верен?

Для любого человека "знающего и любящего математику, решающего задачи на уровне составления матмоделей", не составит труда решить неравенство "fact(n) < 2^32", хотя бы и методом Ньютона.

А ты сможешь сказать, какие ограничения по памяти/скорости/точности накладывает Python/Java/YourFavoriteLanguage ?

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

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