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 ()

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

> Ему не нужен ворох знаний об внутреннем устройстве процессора, что есть переполнение регистров, ошибка сегментирования. Такой программист эффективен

4.2

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

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

Толстый вброс такой толстый?

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

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

Я же тебе написал если не можешь или лень то используй готовые абстракции которые огородят тебя от платформозависимых вещей.

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

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

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

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

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

> Жаба в этом отношении так же ужасна как C++. У нее нет такой абстракции как число.

Нет, не так же. У неё есть вот:

http://java.sun.com/javase/6/docs/api/java/math/BigInteger.html

Кому интересно - могут написать правильный факториал сами, я щас немного занят.

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

> и не надо кричать, что это недостаток языка - не так часто встают такие задачи, чтоб захламлять stdlib

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

Всё блин как в статье. New Jersey approach. Worse is better.

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

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

>> то есть Ричард Стивенс и Стивен Раго подло врут, да?

>Скорее, они просто ошибаются.

ага, Стивенс и Раго, авторы класического труда по программированию в среде linux - ошибаются, а вот tailgunner - прав :)

>> или Вы не знаете кто это?

>Это авторы старых учебников по программированию.

таки не знаете... книга написана в 2007 году ) не такая уж и старая

хотя, впрочем всё бывает, но тогда пруфлинк, плиз

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

> Ну допустим. Но мы тут сравнивали жабу и С++. Сам он попросил реализацию алгоритма на С++, а потом подсунул поделие на питоне. Не видишь где тут что-то не сходится?

Не несите чушь. Я С++ ни с чем не сравнивал. Я просто попросил реализацию факториала.

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

>> абстракцию тоже надо поддерживать и развивать...

>оставьте это разработчикам сторонних библиотек

Вы же понимаете что это не всегда возможно, да?

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

> Просто в Питоне есть еще замечательное нововведение, что они по умолчанию передаются по ссылке (и эти люди говорят, что Перл неудобен!)

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

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

> Толстый вброс такой толстый?

Я думал тред просто завалит кусками кода. Видимо основная часть школоты в положенном им месте. А так только три калеки привели кучку неработающего говна.

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

> Ну дал ты реализацию на питоне, а на жабе?

Жабокодеры выбирают питон для матзадачь. Ведь важнее скорость написания а не скорость работы программы.

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

> Ведь важнее скорость написания а не скорость работы программы.

В большинстве случаев - конечно.

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

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

чем вам использование библиотеки не дает полноту? чем наличие отдельной библиотеки( а не поставляемой "с языком" ) не корректно?

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

> Вот только каким боком питон в споре С++ vs Жаба?

Осторожнее, Ваша слюна может забрызгать Ваш любимый ковер.

Еще раз, вдумчиво, перечитайте тред.

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

>Ну покажи такие нюансы, которые ты не осилил.

может тебе ещё дать исходные коды от системы рендеринга, которую мы разрабатывали или, как вариант, ключи от квартиры где деньги лежат?

>К тому же всегда можно выбрать компиляторы с минимумом различий, или Фюрер не позволяет? Если всё таки не позволяет, то несколько маленьких абстракций и разницы между компиляторами нет.

вот из-за этих, как Вам кажется маленьких, а на самом деле довольно существенных, различий случаются bug report'ы

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

самому собрать из двух/трех/четырех спеллчекеров один не судьба?
вот у меня спллчекер проверяет английский и русский одновременно.

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

>никогда не писал на mfc - и не собираюсь

хорошо Вам, но в реальном мире порой по другому происходит

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

> чем вам использование библиотеки не дает полноту?

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

> чем наличие отдельной библиотеки( а не поставляемой "с языком" ) не корректно?

Не некорректно, а неудобно. Кроме того, у отдельной библиотеки может быть неясная ситуация с мэйнтейнером. Это лишняя головная боль.

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

>> Для каждой задачи свой язык :))))))
> Ну допустим. Но мы тут сравнивали жабу и С++. Сам он попросил реализацию алгоритма на С++, а потом подсунул поделие на питоне. Не видишь где тут что-то не сходится?


Выбор baverman питона для таких задачь как решение факториала меня очень насмешило. Так что вы мой сарказм не правильно поняли.

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

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

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

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

> может тебе ещё дать исходные коды от системы рендеринга, которую мы разрабатывали или, как вариант, ключи от квартиры где деньги лежат?

тоесть у тебя нет реального примера, есть только слова?

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

опять же пример в студию.

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

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

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

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

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

Но сама программа может не успеть всрок выдать результат :)))))))

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

> Не некорректно, а неудобно. Кроме того, у отдельной библиотеки может быть неясная ситуация с мэйнтейнером. Это лишняя головная боль.

к счастью не так часто надо вычислять факториалы, а использование сторонних библиотек совсем не такое страшное, как вы расписываете :)

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

> чем вам использование библиотеки не дает полноту? чем наличие отдельной библиотеки( а не поставляемой "с языком" ) не корректно

Очень малая часть программистов на C++ использует правильные инструменты и умеет писать безопасный код. Превращение личинок плюсовиков в бабочек -- очень дорогая и трудоемкая операция. Проблема только в этом.

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

> Превращение личинок плюсовиков в бабочек -- очень дорогая и трудоемкая операция. Проблема только в этом.

и в результате таки оно того стоит, ИМХО конечно

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

> ага, Стивенс и Раго, авторы класического труда по программированию в среде linux - ошибаются, а вот tailgunner - прав :)

Ага.

>> Это авторы старых учебников по программированию.

> таки не знаете... книга написана в 2007 году

Скорее, она издана в 2007 году.

> пруфлинк, плиз

Это требует некоторого знания истории и внутренностей ядра. Вот неплохой и довольно краткий материал: http://people.redhat.com/drepper/nptl-design.pdf

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

>Кроме того, у отдельной библиотеки может быть неясная ситуация с мэйнтейнером.

Когда библиотека перестаёт развививаться дальше, она не исчезает волшебным образом из всех проектов, где используется. Просто перестаёт обновляться. И у программиста останется ещё уйма времени на то, чтобы найти что-то новое и более живое. Или, в самом крайнем случае, написать это новое самому. Чем ему и так бы пришлось заниматься (но много раньше и в ещё не работающем проекте), если бы он сразу забил на использование библиотек.

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

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

> Опять неверно.

Неверно что? Выразись точнее.

> Откуда ж вы такие уверенные беретесь. Просто диву даюсь. hint: sizeof(unsigned). В коментариях было дано очень точное правило.

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

> Видимо для плюс-плюс-кунов существует только одна платформа.

Видимо, ты не можешь понять то, что я совершенно осознанно ввёл допущение "sizeof(unsigned) == 32".

>> Пока не дашь свою реализацию, будешь сидеть голодный. > Чуть выше уже.

Вижу, что тролль правильно соображает "не уступлю -- не покормят". Понимаешь ли, подавляющее большинство плюсовиков знают, что для факториалов нужно использовать абстракцию "больших" чисел и пойдут за ней на http://sourceforge.net/projects/cpp-bigint/ (привет, Sahas!), а не станут использовать стандартную арифметику "машинных слов". А как ты узнаешь, что питоновская "абстракция" не подходит тебе в определённой ситуации, если ты (это мы уже выяснили) документацию не читаешь? И что будешь делать? Плюсовик в этом случае сможет написать лучшую модель, потому что он умеет "возиться с байтами".

>> Cтарались, писали программы > Мало старались, пока выходит только УГ. Сливаешь в переходе на чувственые эпитеты.

Всё дело не в том, что в Питоне/ГдеТоЕщё есть удобная абстракция "число" из коробки, а в плюсах нужно брать стороннюю библиотеку. Дело в том, что ты с маху объявил всех плюсовиков неспособными ни на что большее чем "перекладывать байты". Мы тоже решали дифуры, изучали мат. логику и теорию алгоритмов, читали Кнута и SICP. Или ты считаешь, что тебя другим пальцем делали? Считаешь себя Д'Артаньяном среди сексменьшинств? Детей своих учить будешь.

anonymous
()
Ответ на: комментарий от sjinks
#include <iostream>
#include <gmpxx.h>

mpz_class factorial(unsigned int x)
{
        mpz_class result(1);

        while (x > 1) {
                result *= x;
                --x;
        }

        return result;
}

int main(int, char**)
{
        ::std::cout << factorial(30) << ::std::endl;
        return 0;
}
sjinks ★★★
()
Ответ на: комментарий от lester

> как бы уровень пишущих на Java тоже зачастую не велик, и языки тут не причем

Это не мешает им работать. lester, ты бы взял в свой отдел нонешних песцов факториала?

> задача в ответ - дана строка на 1млн символов, где слова разделены пробелами, раздели ее максимально быстро на массив слов

Что значит дана? Она уже в памяти или в файле?

Что значит "максимально"? То есть существует эталонная идеальная реализация?

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

>> http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx

>Не понимаю, зачем использовать это в переносимых программах, но это явно содрано с юниксовой session.

эээ, точно внимательно прочитали?.. это про sandboxng, session имхо для другого используется... хотя, конечно, я не работал плотно с ними, так что возможно я и не прав здесь )

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

>> Вы же понимаете что это не всегда возможно, да?

>давайте пример

хе, мне кажется Вы и сами можете придумать такие примеры с лёгкостью... например административный запрет на использование сторонних библиотек, или, например, использование специфичной платформы на которую данные библиотеки не портированы + ещё "питцот тыщ" ситуаций возникающих в повседневной работе )

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

>> хорошо Вам, но в реальном мире порой по другому происходит

>хорошо, что у меня есть выбор

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

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

> Понимаешь ли, подавляющее большинство плюсовиков знают, что для факториалов нужно использовать абстракцию "больших" чисел и пойдут за ней на http://sourceforge.net/projects/cpp-bigint/

Отчего же никто из вас не пошел? Когда носом ткнули, только тогда начали копошиться.

> Дело в том, что ты с маху объявил всех плюсовиков неспособными ни на что большее чем "перекладывать байты"

Что это? Неужели баттхёрт? Вообще то я недеялся выявить только восторженную школоту от C++. Специалисты всегда в почете.

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

> Что значит дана? Она уже в памяти или в файле?

в памяти

> Что значит "максимально"? То есть существует эталонная идеальная реализация?


хорошо - просто сделайте это без всяких эталонов :)

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

>Боксинг - очень полезная штука для обобщённого программирования.

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

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

> например, использование специфичной платформы на которую данные библиотеки не портированы + ещё "питцот тыщ" ситуаций возникающих в повседневной работе )

к счастью С/C++ большая часть библиотек таки легко портируется( что можно наблюдать на примере тех же дистрибутивов Linux ), потому говорить про такие проблемы в повседневной работе не приходится

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

Не могу собрать.

g++ -lgmp fact3.cpp -o fact3
/tmp/ccMskJxF.o: In function `std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1]>(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]> const&)':
fact3.cpp:(.text._ZlsIA1_12__mpz_structERSoS2_RK10__gmp_exprIT_S4_E[std::basic_ostream<char, std::char_traits<char> >& operator<< <__mpz_struct [1]>(std::basic_ostream<char, std::char_traits<char> >&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]> const&)]+0x1c): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, __mpz_struct const*)'
collect2: ld returned 1 exit status

На сколько могу судить — не перегружена операция вывода в поток. Как, по другому, можно вывести числа произвольной точности?

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

>Новичок должен учиться оперировать абстракциями, а не воевать с железякой. И уж точно не писать велосипеды (а ля, однонаправленный связный список, буээ).

Дурак? список о*енная абстракция.

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

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

А почему бы и не для всего множества натуральных чисел ? Вот, как это выглядит на Java (результат будет абсолютно точным, если считать значений факториала для отрицательных чисел равным 1)

import java.math.BigInteger;
import static java.math.BigInteger.ONE;
public class Test {
    public static void main(String[] args) {
        BigInteger res = ONE;
        BigInteger n = new BigInteger(args[0]);
        while (n.compareTo(ONE) > 0) {
            res = res.multiply(n);
            n = n.subtract(ONE);
        }
        System.out.println(res);
    }
}
Qasta
()
Ответ на: комментарий от anonymous

> может тебе ещё дать исходные коды от системы рендеринга, которую мы разрабатывали или, как вариант, ключи от квартиры где деньги лежат? вот из-за этих, как Вам кажется маленьких, а на самом деле довольно существенных, различий случаются bug report'ы

тоесть у тебя нет реального примера, есть только слова?

опять же пример в студию.

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

но, поверьте, в коде встречались надписи, типа:

#if IS_X11

// below is the ugly stuff for X11 window id and palette

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

Кстати, очень полезное замечание про многопоточность. Можно предложить народу написать факториал, который считается хотя бы в 2 потока на разных языках. Вот тогда и посмотрим :)

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

Спасибо анон, годная копипаста:)

> язык [...] должен быть близок [...] к естественным языкам

1С^W

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