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

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

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

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

Вот после этих суждений тебя надеюсь никто уже не будет серьезно воспринимать :))

Devix
()

сомнительны плюсы определения типа переменной по типу rvalue в присваивании. по итогу в настоящих программах переменные будут присваиваться в стиле var x = (int) 2.

boo32
()

> Ненужным шаблонам в оригинале unnecessary boilerplate. В языках программирования это устоявшаяся идеома (см http://en.wikipedia.org/wiki/Boilerplate_(text)#Boilerplate_code) означает повторение кусков кода. Пример: "vector<map<...> > *v = new vector<map<...> >" - здесь тип прописывается 2 раза, это и есть boilerplate. Лучше переводить это словосочетание "[говорит нет] ненужным повторениям".

anonymous
()

Неделя русского языка на лоре?

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

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

+1

Вопрос в том, что мат. модели бывают очень разными. Кому-то и Фортрана достаточно. Кому-то C++. Другим полезны Java и C#... Еще есть Python и Ко. для работы с соответствующими им мат.моделями. О, ужас! А где-то даже PHP бывает полезным. Многое зависит от задачи.

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

> Ты правда думаешь, что написание портянок кода -- это единственный способ осуществить делегирование?

Ну дык приведи пример (на С++, Java, C# например), ибо красивыми словами сыт не будешь ;)

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

не только :) у меня тоже.
ведь (setf x 2) читается гораздо лучше, чем (var x = 2)

зы: да, я начинающий лиспо-тролль :D

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

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

Плюсы почти в каждом мобильнике имеются. Учите матчасть.

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

> Ну дык приведи пример (на С++, Java, C# например), ибо красивыми словами сыт не будешь ;)

Где я говорил, что для этих языков надо отказаться от наследования? Речь о noop, в котором делегирование на уровне синтаксиса.

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

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

> Вот после этих суждений тебя надеюсь никто уже не будет серьезно воспринимать :))

Может быть Вы, сударь, покажете молодецкую удаль :)

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

> Лучше бы Smalltalk из криокамеры вытащили.

Тогда уж лучше self.

baverman ★★★
()

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

Правдоподобней звучало бы: "Google разрабатывает язык Noop для замены всех языков - как программирования, так и обычных, включая эсперанто".

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

>Новичок должен учиться оперировать абстракциями, а не воевать с железякой. И уж точно не писать велосипеды (а ля, однонаправленный связный список, буээ). Поэтому подойдет любой язык без указателей, без ручного управления памятью, и с мощной стандартной библиотекой. Python, Ruby, Java, C# -- самые первые кандитаты.

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

Вот пример с разбором:

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

Все это к тому, что обычно мало кто уделяет время на изучение как рабоют мусорщик в том или ином языке, где все делается автоматом. А начинающие расчитывают на то, что этот мусорщик телепат и сам знает в каком месте что сделать, что на самом деле абсолютно не так.
В то время как в тех языках, где мусорщика нету или он имеет ограниченный функционал (C, C++, Perl и др.), в документации сразу говорится, что за объектом/функцией/переменной надо следить, освобождать память, как и когда надо, и, как и когда не надо.

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

А на чем по-твоему софт телефона написан? Си и с++.

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

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

А зачем его писать? Он у нас в "стандартной" библитеке давно есть: http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_tool...

А для любителей мат. моделей можно и такое наваять: http://en.wikipedia.org/wiki/Template_metaprogramming#Compile-time_class_gene...

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

// Спящий (анонимус) пробудился!

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

Вот пример с разбором:

что то я не так делаю:

$ python3
Python 3.1.1 (r311:74480, Aug 27 2009, 04:53:25) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> L = range(50*1024*100)
>>> del L
>>>

$ pgrep -f python | xargs ps uww
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
bobrov    1199  0.0  0.2   7660  3948 pts/2    S+   17:36   0:00 python3

Ты описал косяк реализации, а не косяк идеи. В третьем питоне range возвращает генератор, поэтому уделять внимание сборщику мусора и удалению объектов не надо и можно спокойно заняться программированием.

P.S. Я все еще жду C++ программу, вычисляющую факториал. Может быть ты осмелишься продемонстрировать свои джедайские навыки?

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

вы путаете процесс разработки матмодели в предметной области конкретной задачи и процесс преобразования этой модели в матмодель в предметной области конкретного языка. выражаясь проще вы сначала строите модель описывающую совокупность объектов предметной области задачи и потоков данных которыми они обмениваются а затем пытаетесь трансформировать эту модель в код. если язык позволяет вам с минимальными усилиями произвести эту трансформацию то это уже очень хорошо. когда же вам приходится учитывать три тысячи факторов прежде чем это преобразование произвести то это очень плохо. если смотреть с этой точки зрения то на язык С++ вообще лучше не смотреть. если рассматривать PHP как узкоспециализированный язык, то да, для решения своих задач он подходит но опять же нужно учитывать тысячи ньюансов. особенно доставляют отсуствие грамотного дизайна основных API, множество спецметодов и как следствие не самая лучшая реализация модели ООП (что и следовало ожидать глядя на историю развития ООП в PHP), эти ваши superglobals и в целом работа с глобальными переменными. плюс ко всему весьма убогий по меркам сегодняшнего дня синтаксис (чего стоит объявление массивов с помощью array(). помнится я даже пытался пообщаться с разработчиками по этому поводу но в ответ не увидел ничего кроме глухой стены непонимания и одного личного письма в духе RTFM с неясной аргументацией вроде "мы уже все без тебя решили").

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

> А зачем его писать? Он у нас в "стандартной" библитеке давно

Ради одного факториала подключать целый буст???

Товарищи, неужели вы настолько неуверены в своих способностях, что боитесь опозориться, предоставив свои реализации?

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

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

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

> Мда, сейчас способность написать функцию вычисления факториала - уже показатель чего-то?

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

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

>По сути сейчас от языка мало что зависит т.к. нет специалистов по программированию, а полно "кодеров на PHP"

хорошо сказал.

А по теме, уж лучше Scala пользовать. Нахера еще один недоязык с осуждениями в стиле "а давайте заменим && на 'and'". Бред.

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

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

Условные выражения и циклы - тоже?

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

>А для любителей мат. моделей можно и такое наваять: http://en.wikipedia.org/wiki/Template_metaprogramming#Compile-time_class_gene.. .

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

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

> У меня фокс проверяет вполне пристойно. Вот только почему-то авторы этих спеллчекеров забывают, что люди не только один язык используют :(

Use midori, Luke :)

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

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

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

3. traits (они же миксины) в правильных языках
4. AOP

Учим матчасть :)

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

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

Я с тобой вообще не согласен.
С такого обучения получиться - быдлокодер!

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

> Может быть Вы, сударь, покажете молодецкую удаль

Тебе халопу? Ну уж нет :)))

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

Отважный шаг. Спасибо.

#include <math.h>
#include <stdio.h>


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


int main() {
    printf("%.0f\n", factorial(30));
}


bobrov@bober:/tmp$ g++ fact.cpp -o fact
bobrov@bober:/tmp$ ./fact 
265252859812191104246398737973248

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

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

>> сильной типизации

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

> А вот почему они вовсе упрознили наследование??

СТРОГАЯ типизация, блин!!!

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

> Ради одного факториала подключать целый буст??? Ты хоть понимаешь то, что сам сказал? Знаешь что такое буст и как он подключается? Подсказка: буст -- это набор библиотек. Тебя не давит жаба (каламбур) ради одного только ArrayList использовать целую JSE вместо JME?

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

Ты нереально достал: http://pastebin.ca/1572618

Могу то же самое написать на Java/Python/Perl/Lisp/C#/Forth and many more. Жду списка допущенных мною ошибок с подробными комментариями.

P.S. Регистрант, тебя с головой выдаёт зеленоватый оттенок кожи.

// Captcha "boosters straight"

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

меня периодически радует "непробиваемое" утверждение, что Java тормозит. ну-ну... И на С можно так написать, что будет выполняться медленнее вычисления на листке бумаги. Просто надо мозгами пользоваться (и при выборе языка и при написании проги).

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

>Пример: "vector<map<...> > *v = new vector<map<...> >" - здесь тип прописывается 2 раза

Такому повторению говорит "ненужно" сам c++. Указатели на векторы не нужны. На крайний случай есть auto.

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

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

быдлодейвайсы потому что. А без жабы было бы не труЪ-быдло.

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

> С такого обучения получиться - быдлокодер!

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

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

Ответ неверен. Должно быть по меньшей мере три нуля.

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

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

Сократим переговоры ;)

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

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

Ты нереально достал: http://pastebin.ca/1572618

bobrov@bober:/tmp$ ./fact2 
Here are results of various methods of calculating factorial of 30
Loop: 1409286144
Recursion: 1409286144
Recursion with tail optimization: 1409286144

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

Предыдущая попытка была хоть на правду похожа.

Мои зеленые лапки ждут дальнейшего угощения.

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