LINUX.ORG.RU

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

как последних девелоперов уволят, ваабще чистый будет :)

chucha ★★★☆
()
Ответ на: комментарий от bossa-nava

Какой же убогий bossa-nava, видны все "достоинства" не постигшего java технологий студента

tukan
()

Ась? Нормальные дженерики сделали (ала С#) ? или делегаты ? или лямбда ф-ции ? overhead по памяти уменьшили ? код классов (не системных) классов шарится между жвм-ами? Что досих пор нет? Nah!

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

>Ась? Нормальные дженерики сделали (ала С#) ? или делегаты ? или лямбда ф-ции ? overhead по памяти уменьшили ? код классов (не системных) классов шарится между жвм-ами? Что досих пор нет? Nah!

Делегаты - избыточная сущность для недоучек, неспособных правильно проектировать интерфейсы.

MS
()

Вроде birdie новость запостил, а флейма нет ;-)

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

Дык, это ж багфикс. Чего хотел-то?

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

>Делегаты - избыточная сущность для недоучек, неспособных правильно проектировать интерфейсы.

А вы как видно сударь большой ученый? Ну так просветите, как правильно спроектировать интерфейс, например, с одним методом, возвращающим void и принимающим ... ну скажем Object. Я конечно понимаю, что простым путем вы непойдете и продемонстрируете нечто ну ооооочень изящное и свежее (а не дурацкую реализацию интерфейса внутренним классом). Ну и заодно объясните, в каком это месте делегаты избыточны, ведь даже в классических Чисто-Объектных (а не ОО) языках, как Smalltalk или Effel изпользуют именно делегаты (селекторы в Smalltalk и агенты в Effel) - а уж "авторитет" этих язЫков признан самым почтенными и авторитетными "ПрафэсОрами", каким вы без сомнения (судя по стилю изложения и глубине мыслей) и являетесь.

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

> Делегаты - избыточная сущность для недоучек, неспособных правильно проектировать интерфейсы.

Anonymous inner classes чем-то лучше, кроме откровенно мусорного синтаксиса?

Да, господа, и когда у вас будут полноценные замыкания?

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

> Ну так просветите, как правильно спроектировать интерфейс, например, с одним методом, возвращающим void и принимающим ... ну скажем Object. Я конечно понимаю, что простым путем вы непойдете и продемонстрируете нечто ну ооооочень изящное и свежее (а не дурацкую реализацию интерфейса внутренним классом).

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

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

Не надо спорить. Java - это в первую очередь платформа, и уже во вторую - язык. А вы как бараны уперлись во всякие делегаты и замыкания!

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

Писать быстро и качественно можно в конце концов и на ассемблере, главное иметь библиотеку грамотно спроектированных макросов :)

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

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

Нет, главное, это чтобы индусы в этой библиотеке смогли разобраться :)

>Да, господа, и когда у вас будут полноценные замыкания?

Когда без них просто невозможно станет писать ОО программы, тогда их придется ввести в язык. Пока же нуждаются в замыканиях только академики и уникум Слава Пестов.

> код классов (не системных) классов шарится между жвм-ами? Что досих пор нет?

А что в CLR уже шарится?

anonymous
()

Меня, все же, умиляют персонажи, которые в любом топике по Java начинают нести свет в массы про то, какой Java отстой и какой замечательный язык [...] (нужное вписать), ибо там реализованы все известные персонажу академические концепции. Цель-то какая преследуется, не очень понятно?

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

>Цель-то какая преследуется, не очень понятно?

уменьшить количество дебилов в айти вообще и в человечестве в частности. что тут сложного? чем меньше биомусора в обществе тем легче ему (обществу) живется. это же элементарно, nest pa?

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

Ура! наконец-то ты зарегистрировался!

>Пипл, качайте Мустанг. Это рулез. _Намного_ круче, чем 5.0 :)

http://download.java.net/jdk6/binaries/ ?

А IntelliJ IDEA его 1.6 понимает?

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

>Это рулез. _Намного_ круче, чем 5.0 :)

Ага. Только почему-то в 1.5 раза медленнее работает, чем 1.5

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

> уменьшить количество дебилов в айти вообще и в человечестве в частности. что тут сложного? чем меньше биомусора в обществе тем легче ему (обществу) живется. это же элементарно, nest pa?

Да уж не бином Ньютона. Комплекс собственной болезненной исключительности имени Луговского тут многих мучает.

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

> Ага. Только почему-то в 1.5 раза медленнее работает, чем 1.5

Это нормально. 1.7 будет работать в 1.6 раз медленнее, чем 1.6.

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

> Чисто-Объектных (а не ОО) языках, как Smalltalk или Effel изпользуют именно делегаты

Так я и знал! Скоро будет заявлено что это изобретение M$. Для шибко умных они называются не "делегаты" - мутантский термин для бывших-VB-программистов-окончивших-курсы - а замыкания(closures) или если еще более классически то lambda.

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

> Когда без них просто невозможно станет писать ОО программы, тогда их придется ввести в язык.

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

> Пока же нуждаются в замыканиях только академики и уникум Слава Пестов

Если ты не знаешь как ими пользоваться - это не значит что они не нужны.

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

lambda как определение анонимной функции, и closures (функции, 
связанные с лексическим окружением) - вещи, вообще говоря, 
несвязанные.

 * (let ((x 5)) (defun test-closure () (setf x (+ x 1))))
TEST-CLOSURE
 * (test-closure)
6
 * (test-closure)
7

Это замыкание.

а вот

my $coderef = sub {shift + 1};

это лямбда (ну, не совсем: аргументов нету). При этом она нифига не closure, если определена на верхнем уровне.

Я не знаю C#, но вроде как делегаты - это частный случай замыканий, в 
которых вместо лексического окружения используется экземпляр класса. 
Это гораздо больше похоже на function currying, чем на closure:

sub curry_first_arg($$) {
  my $sub = shift;
  my $arg = shift;

  return sub {
    $sub->($arg, @_);
  }
}

package Some::Class;

sub new {
  my $class = shift;
  bless { callback => shift }, $class;
}

sub do_work() {
  #...
  $self->{callback}->($returned_data);
}

#some other code
1;

package Some::Class;

sub the_delegate {
  my $self = shift;
  my $param = shift;
  #blah-blah
}

sub do_smth {
  my $self = shift;
  my $worker = new Some::Class(curry_first_arg(\&the_delegate, $self));
  $worker->do_work(); 
  # а вот здесь будет обратный вызов, эквивалентный 
  # $self->the_delegate($returned_data).
  # причем worker class не обязан знать, что это метод, и чей это метод.
  # например, мы могли бы "ре-делегировать", отдав туда делегата,
  # которого нам самим дали снаружи.
}
  

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

Э... Второй пакет, в котором определяется делегат, очевидно должен называться 'Other::Class' ;-)

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

> Ага. Только почему-то в 1.5 раза медленнее работает, чем 1.5

нифига подобного. при условии, что это промежуточные билды, скорость на 5+. Sun много сейчас делает по оптимизации библиотек. Swing в мустанге _очень_ шустрый. IDEA с ключом -Didea.no.jdk.check=true заработает.

--седайко стюмчик

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

> Разве лямбда не параметризуется environment?

На каком языке пример-то? Похож на Haskell, но вроде как не он. В нем, кажется да - но я его не знаю, не придумал, что же на нем имеет смысл писать нормальному человеку. Только обучающую книжку прочитал.

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

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

> Похож на Haskell, но вроде как не он.

OCaml

Вот на Haskell

flam :: Int->Int flam x = (\y -> x + y) 10

Main> flam 15 25

То же самое

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

Дык такая фигня происходит с любым мутабельным объектом(здесь переменная). Не надо делать в функции side effect (типа setf) и все будет хорошо.

Если не вру то формально лямбда - это анонимная функция которая применяется к одному аргументу и окружению.

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

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

Врешь, имхо. Нету никакого окружения. только оргумент.

В примере на хаскелле 10 - это просто value, не имеющая отношения к замыканиям и лексическому окружению (как scope перевести правильно?).

/me подумал, и понял, что в чисто-функциональных языках, коим является Haskell, замыканий быть не может вообще.

Все это не имеет ни малейшего отношения к java, в общем-то, кроме того, что closures - более гибкая штука, чем anonymous inner classes. Я, правда, не в курсе, есть ли языки, в которых замыкания бывают типизированными (в смысле, имеют статически типизированный список аргументов).

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

> /me подумал, и понял, что в чисто-функциональных языках, коим является Haskell, замыканий быть не может вообще.

<a href="http://haskell.org/hawiki/Closure">http://haskell.org/hawiki/ Closure</a>

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

Твой рулез глючит и валится на каждый чих. Года через 3 посмотрим, а пока что-то и на 1.5 переходить не хочется. 1.4 рулит!

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

Количество дебилов уменьшается не через просвещение и образование, а через эвтаназию и контрацепцию.

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

> Ну сделай на этой платформе БЫСТРЫЕ делегаты. Обломишься!

Да ёпта! На кой ляд мне твои делегаты? Зачем делать делегаты ради делегатов? Ну нету в яве делегатов, НЕТУ, но от их отсутствия никто особо не страдает (исключая тех, у кого на компьютере 10 разных операционных систем). Я же говорю, что не в языке дело, а вы мне опять про делегаты.

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

> Ну нету в яве делегатов, НЕТУ

> Я же говорю, что не в языке дело

Ты туп неимоверно. Или это ПЛАТФОРМА, и тогда действительно "не в языке дело" - какую фичу языка захотим, такую и реализуем, или это язык с заточенной под него VM. Один единственный жалкий язык для недоумков - и тогда никто не смеет пасть разевать и вякать про какую-то там "платформу".

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

> В примере на хаскелле 10 - это просто value, не имеющая отношения к замыканиям и лексическому окружению (как scope перевести правильно?).

[1]> (let ((x 5)) (defun test-lambda () ((lambda (y) (setf x (+ x y))) 5 )))

TEST-LAMBDA

[2]> (test-lambda)

10

[3]> (test-lambda)

15

[4]> (test-lambda)

20

Тогда почему вот это работает? Убей не вижу разницы.

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

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

А жабисты тока херней маются, мечтают о замыканиях и делегатах? Ась?

А по-моему какраз все наоборот.

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

Удавись, пожалуйста, жалкое жывотное.

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

>Ну и сделай то же самое на Хаскелле. :)

На OCaml:

# let x = ref 10;;

val x : int ref = {contents = 10}

# let f y = (fun z -> x := !x + z) y;;

val f : int -> unit = <fun>

# f 5;;

- : unit = ()

# x;;

- : int ref = {contents = 15}

# f 6;;

- : unit = ()

# x;;

- : int ref = {contents = 21}

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

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

Вот тебе еще пример более наглядный (OCaml):

# let x = ref 15;;

val x : int ref = {contents = 15}

# let f y = (fun z -> x := !x + z) y;x;;

val f : int -> int ref = <fun>

# f 5;;

- : int ref = {contents = 20}

# f 10;;

- : int ref = {contents = 30}

# let x = ref 98;;

val x : int ref = {contents = 98}

# f 11;;

- : int ref = {contents = 41}

# x;;

- : int ref = {contents = 98}

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

За "туп неимоверно" в реале получил бы по фейсу, козёл.

> ...какую фичу языка захотим, такую и реализуем... за это тоже, потому что никак иначе невозможно объяснить, что "фичи" нахрен никому не сдались (или иначе, "фичи" имеют самый низкий приоритет при выборе языка). Люди (в отличие от "самых умных" упертых баранов) выбирают язык не из-за "фич", а из соображений быстрого и качественного выполнения поставленной задачи. Например математическое моделирование удобно делать в фортране, а писать серверные приложения в яве. Каким раком здесь стоят замыкания?

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

За "туп неимоверно" в реале получил бы по фейсу, козёл.

> ...какую фичу языка захотим, такую и реализуем...

за это тоже, потому что никак иначе невозможно объяснить, что "фичи" нахрен никому не сдались (или иначе, "фичи" имеют самый низкий приоритет при выборе языка). Люди (в отличие от "самых умных" упертых баранов) выбирают язык не из-за "фич", а из соображений быстрого и качественного выполнения поставленной задачи. Например математическое моделирование удобно делать в фортране, а писать серверные приложения в яве. Каким раком здесь стоят замыкания?

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

> За "туп неимоверно" в реале получил бы по фейсу

Ути-пути, какая смешная, жалкая шавка. Околей, пожалуйста, ничтожество.

Ты просто упёртая и безграмотная мразь, и тебе, гниде, надо отрезать за это мудя.

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

>> За "туп неимоверно" в реале получил бы по фейсу > Ути-пути, какая смешная, жалкая шавка. Околей, пожалуйста, ничтожество. > Ты просто упёртая и безграмотная мразь, и тебе, гниде, надо отрезать за это мудя.

Вот скажите мне, господа, как с такими людьми (люмпенами) можно общаться?

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