2012-03-14 1 views
2

Я основной программист Java, но в последнее время я проявлял интерес к smalltalk. Я должен признать, что я полностью взорван огромной властью, которую язык дает программисту, и я нахожу динамическую типизацию как большой плюс (лично).Почему блокировка блоков была исключена из java?

Я не хочу сравнивать два языка, потому что я понимаю, что Java хорошо подходит для корпоративной реальности, которая убирает большую часть мощности программиста навсегда (например, использование указателей?), Чтобы уменьшить возможности для совершения ошибки. Согласовано. Но я не понимаю, почему концепция блоков/замыканий устранена не включена в язык? Потому что я действительно нахожу их очень полезными, и я не вижу причин, почему такая мощная функция не может быть замужем в java, хотя факт, что она статична. Есть ли какая-то конкретная причина для этого?

+3

Особенности обычно не удаляются * с языков - они просто не включены *, что является большой разницей. Лямбда-выражения, надеюсь, попадут в Java 8 ... –

ответ

3

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

Надеюсь, он будет включен в Java 8, если только для того, чтобы остановить людей, жалующихся на это. ;)

Я не вижу причин, почему такая мощная функция не может быть женат на Java

Вы можете думать реалистичного примера то, что вы можете сделать с крышкой, вы можете» t с Java уже? Основное различие - производительность и удобочитаемость. Хотя это очень важно, его не так, как это невозможно.

+2

Это не хороший аргумент. Все, что вы можете сделать в Java, вы можете сделать в машинный код, но мы не хотим этого делать. Производительность и удобочитаемость - это исключительно важные вещи, это язык программирования *. См. Http://c2.com/cgi/wiki?ProgrammingLanguagesAreSyntacticSugar –

+1

Это не значит, что вы добавляете всевозможные возможности каждого языка. Большинство языков, которые пытаются сделать это умирают, заменяются более простыми языками. Java ошибается на стороне плохой работы, но, по крайней мере, у вас есть хороший шанс понять их все. В то время как закрытие классно, до сих пор нет согласия относительно дизайна Java 8, хотя другие языки поддерживали его в течение некоторого времени. т. е. идея не настолько зрелая, как вы могли бы ожидать. –