(Untitled)

Dec 09, 2012 15:07

Как же меня бесит «Истинная объектность» Java иногда начинает раздражать.

Возьмём, например, сравнение строк. Допустим, у нас есть два объекта: string1 и string2. На C++ и на многих других языках я бы написал string1 == string2. На Java я тоже могу так написать, но это будет значить совершенно не то. Если я пришёл в Java с опытом программирования ( Read more... )

злые люди, программирование, java

Leave a comment

Comments 9

sergey_nechaev December 9 2012, 08:41:42 UTC
а еще! Еще там int не приводится сам по себе к bool!

Reply

phantom_ghostly December 9 2012, 09:45:43 UTC
Это я как раз вполне принимаю.

Reply


salmin December 9 2012, 17:04:46 UTC
забавно, что если переходить с C на Java, минуя C++, то все будет абсолютно логично.
бесит только, что запись string1.equals(string2) несимметрична.

Reply


fenster December 9 2012, 19:41:23 UTC
На самом деле +1 к salmin: я при сравнении строк на незнакомом языке скорее задумаюсь, а как же тут принято это делать, чем молча напишу ==.

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

Ну и да: если учить джаву, не имея до неё бэкграунда из паскаля-си-c++, всё будет достаточно логично. Только потом не сможешь ни на чём другом писать, наверное :)

Reply

phantom_ghostly December 10 2012, 01:36:04 UTC
Да я понимаю, что проблема не в Java, а в том, что два разных языка могут иметь несовместимые идиомы.

Кстати, про звёздочки и ссылки: вот как раз с этим почему-то у меня в Java проблемы нет. В моих ассоциациях возможность присвоить null с необходимостью означает, что слева не объект, а что-то более хитрое (например, умный указатель).

Reply


(The comment has been removed)

phantom_ghostly December 10 2012, 01:36:58 UTC
Что это такое? Не поверишь, мне Google не помог.

Reply

salmin December 10 2012, 03:04:18 UTC
phantom_ghostly December 10 2012, 03:18:57 UTC
whoozle написал «на скалке». Не знаю, что он имел в виду.

Посмотрел на эту Scala. Местами ассоциируется с Pascal, это настораживает. И вообще как-то... неуклюже выглядит. Может, эта штука и хороша функционально, но эстетически она непривлекательна, и что-то мне подсказывает, что так кажется не только мне: после десяти лет разработки этот язык занимает 34-е место в рейтинге популярности языков, при этом Java, которую Scala как бы должен вытеснить, стоит на втором.

Reply


ext_3758704 July 26 2016, 05:35:11 UTC
хех, помню намучился с этим сравнением. Так как нужно было в jaspersoft создать отчёт. Использовал java переменные, и по наитию везде делал стандартное сравнение, выходила ерунда. Я все грешил на неправильный sql запрос. После долгих мучений обратился к джависту, он то и открыл мне глаза на мой промах с string1.equals(string2)

Reply


Leave a comment

Up