Re[9]: Adding notnull to the Java Programming Language
От: Baudolino  
Дата: 13.08.07 15:03
Оценка:
R>Конкретнее можно? Про исходный код... к примеру, SWT/JFace так попросту напичкан всевозможными NullPointerException, IllegalArgumentException и etc.
SWT — отдельный разговор. Я в него не играю с тех пор, как пересел дома на MSVUx64, потому что нет нормальной реализации.

>В особенности интересна претензия к архитектуре Eclipse, это OSGi вам не по душе или что?

RCP с его обилием синглтонов. Внутренние пакеты. Плохо продуманное и часто меняющееся API.

(еще три месяца назад я писал на базе Eclipse RCP коммерческий софт и сейчас радуюсь, что завязал — хоть эта платформа и лучшая)
Re[3]: notnull не очень хорошая идея
От: Baudolino  
Дата: 13.08.07 15:14
Оценка:
B>>Жаль что JetBrains лезет вперёд батьки и вводит нестандартные конструкции.
R>Есть потребность в контрактном программировании, а JDK на данный момент не предоставляет удобный инструментарий для того (даже контракты на утверждениях assert — это все же жуткий overhead), так что же — ждать у моря погоды?
Разумеется нет. Но такой инструментарий должен быть независимым от производителя IDE.

>Про java.constraint.Optional не понял, какой смысл в него вкладывается?

Декларируется в явном виде возможность не задавать значение поля. А вообще, если бы я решал, как это будет в Java SE, то позволил бы пользователям уточнять семантику ограничений (при условии непротиворечивости). Так чтобы, например, аннотация Optional позволяла описать пустой контейнер:

public class Profile {

   @Optional PostalAddress address = new PostalAddress(); // optional = адрес не заполнен, хотя объект под него создан

}


При этом компилятор будет поддерживать часть базовой семантики (@Mandatory, @Length для инициализированных переменных...),
IDE будет добавлять свой анализ, а библиотеки приложения с аннотированной моделью — расширенную семантику (например с помощью валидаторов для проверки пользовательского ввода).
Re[4]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 13.08.07 15:30
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>>>Жаль что JetBrains лезет вперёд батьки и вводит нестандартные конструкции.

R>>Есть потребность в контрактном программировании, а JDK на данный момент не предоставляет удобный инструментарий для того (даже контракты на утверждениях assert — это все же жуткий overhead), так что же — ждать у моря погоды?
B>Разумеется нет. Но такой инструментарий должен быть независимым от производителя IDE.

И независимым от языка, потому как ждать у моря погоды тоже хреново. Особенно если у тебя частная задача, и встраивать её в язык программирования будет излишним.
Следовательно, нужен некий стандарт на представление кода, единый для компиляторов и других средств программирования (IDE, верификаторов, генераторов кода и пр.). Можно сделать такой стандарт для явы, но с одной стороны, ява будет развиваться дальше (и стандарт прийдётся менять), а с другой стороны, неплохо бы иметь ту-же функциональность и для других языков — как используемых вместе с java (вроде JSP), так и подобных языков (C#).
Единым стандартом сейчас является текстовое представление кода, которое не отвечает всем вышеупомянутым пожеланиям с одной стороны, а с другой стороны — неудобно для работы (всё равно и компилятор, и IDE, и генераторы кода преобразуют текст в AST — abstract syntax tree).

Таким образом, если мы хотим сделать расширяемое (в будущем и между языками в настоящем) стандартное представление, для анализа кода и прочих средств разработки — лучше отказаться от текстового представления и стандартизировать AST представление. Вот SymADE — это и есть такой проект.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
И опять офф про Eclipse
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 13.08.07 15:49
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>RCP с его обилием синглтонов.

Примеры и предложения по тому, как обойтись без них?

B>Внутренние пакеты. Плохо продуманное и часто меняющееся API.

org.eclipse.*.internal.*?
Если вы о том, то... вы читали рекомендации по тому, что не стоит пользоваться классами данных пакетов?

B>(еще три месяца назад я писал на базе Eclipse RCP коммерческий софт и сейчас радуюсь, что завязал — хоть эта платформа и лучшая)

Согласны, что лучшая платформа, но радуетесь, что завязали — очень непонятно. И какие есть альтернативы?
Re[4]: notnull не очень хорошая идея
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 13.08.07 15:49
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>Разумеется нет. Но такой инструментарий должен быть независимым от производителя IDE.

А, вы про наработки JetBrains? Не в курсе, как там. Oval же — просто библиотека, правда и требует потрошения кода аспектным компилятором.

B>Декларируется в явном виде возможность не задавать значение поля.

Все равно непонятно, чем это отличается от простой декларации переменной: умолчальным значением примитива или пустым значением для ссылки. Скажем, явную декларацию необходимости инициализации поля, хоть и разовую, хорошо обеспечивает immutable-модификатор final, который намного разумнее было бы сделать умолчальным — практичнее декларировать изменяемость, а не наоборот.

B>public class Profile {

B>@Optional PostalAddress address = new PostalAddress(); // optional = адрес не заполнен, хотя объект под него создан
Какую смысловую нагрузку несет @Optional для поля address в классе Profile; то есть Profile знает, что его поле address фиктивно? Допустим... и что дальше, как это есть, чем это лучше null?

B>При этом компилятор будет поддерживать часть базовой семантики (@Mandatory, @Length для инициализированных переменных...),

B>IDE будет добавлять свой анализ, а библиотеки приложения с аннотированной моделью — расширенную семантику (например с помощью валидаторов для проверки пользовательского ввода).
Что-то мне подсказывает, что от JCP такого счастья ждать в ближайшие годы, как и у моря погоды.
Re[5]: notnull не очень хорошая идея
От:  
Дата: 13.08.07 16:02
Оценка: +1
Hello, mkizub!
You wrote on Mon, 13 Aug 2007 15:30:26 GMT:

m> Таким образом, если мы хотим сделать расширяемое (в будущем и

m> между языками в настоящем) стандартное представление, для анализа
m> кода и прочих средств разработки — лучше отказаться от текстового
m> представления и стандартизировать AST представление. Вот
m> SymADE — это и есть такой проект.

Максим, ты уже притомил пиаром своего SymADE. Начинает напоминать культ N.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 13.08.07 16:18
Оценка: :)
Здравствуйте, YК, Вы писали:

YК>Максим, ты уже притомил пиаром своего SymADE. Начинает напоминать культ N.


То есть, раз ты притомился, мне вообще замолкнуть в тряпочку?
Или пиарить то, что тебя ещё не притомило?
И лучше проконсультироваться с тобой, предварительно, не притомит ли тебя пиар Oval-а или ещё какой хрени, да?
Ты можешь внятно сформулировать, что тебя задело?
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[7]: notnull не очень хорошая идея
От:  
Дата: 13.08.07 16:40
Оценка:
Hello, mkizub!
You wrote on Mon, 13 Aug 2007 16:18:46 GMT:

YК>> Максим, ты уже притомил пиаром своего SymADE. Начинает

YК>> напоминать культ N.

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

m> Или пиарить то, что тебя ещё не притомило?
m> И лучше проконсультироваться с тобой, предварительно, не притомит
m> ли тебя пиар Oval-а или ещё какой хрени, да?
m> Ты можешь внятно сформулировать, что тебя задело?

Меня ничего не задело. Просто не надо сунуть своего сфероконя в вещи, имеющиие к нему отдаленное отношение.
Posted via RSDN NNTP Server 2.1 beta
Re: И опять офф про Eclipse
От: Baudolino  
Дата: 13.08.07 16:50
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Baudolino, Вы писали:


B>>RCP с его обилием синглтонов.

R>Примеры и предложения по тому, как обойтись без них?
Вкратце — IoC. А детально — поля этой книги слишком маленькие.

B>>Внутренние пакеты. Плохо продуманное и часто меняющееся API.

R>org.eclipse.*.internal.*?
R>Если вы о том, то... вы читали рекомендации по тому, что не стоит пользоваться классами данных пакетов?
К сожалению, это не всегда возможно. В деталях, простите, сейчас не могу — конкретные грабли уже успел забыть.

B>>(еще три месяца назад я писал на базе Eclipse RCP коммерческий софт и сейчас радуюсь, что завязал — хоть эта платформа и лучшая)

R>Согласны, что лучшая платформа, но радуетесь, что завязали — очень непонятно. И какие есть альтернативы?
Сменил место работы и теперь ругаюсь на Spring Альтератив пока не вижу. Eclipse хоть и сырая технология, но работающая и позволяющая делать очень многое.
Re[8]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 13.08.07 16:57
Оценка:
Здравствуйте, YК, Вы писали:

YК>Меня ничего не задело. Просто не надо сунуть своего сфероконя в вещи, имеющиие к нему отдаленное отношение.


Имеющего к этому прямое отношение, потому как решение данной проблемы было одной из основных мотиваций при написании SymADE.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[9]: notnull не очень хорошая идея
От:  
Дата: 13.08.07 17:09
Оценка:
Hello, mkizub!
You wrote on Mon, 13 Aug 2007 16:57:22 GMT:

YК>> Меня ничего не задело. Просто не надо сунуть своего сфероконя в

YК>> вещи, имеющиие к нему отдаленное отношение.

m> Имеющего к этому прямое отношение, потому как решение данной

m> проблемы было одной из основных мотиваций при написании SymADE.

Обобщать на основе мотиваций — это сильно

Языконезависимость для решения данной проблемы — а именно реализации контрактного программирования в Java — нафиг не нужна.
Posted via RSDN NNTP Server 2.1 beta
Re[10]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 13.08.07 18:54
Оценка:
Здравствуйте, YК, Вы писали:

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


Языконезависимость — это одна часть проблемы. Пусть она не волнует данного пользователя, но в неявном виде она присутствует для разработчика.
Я знаю несколько реализаций расширений для явы для решения данной проблемы — и все они не пользуются успехом.
Это такие компиляторы как JML (http://www.eecs.ucf.edu/~leavens/JML/), IntelliJ Idea, prototype implementation для JSR 308 и многие предыдущие, частично описанные здесь http://www.robert-tolksdorf.de/vmlanguages.html и много просто академических проектов с разработкой закончившейся написанием статьи и забытых.

Все эти решения, а равно и другие решения (вроде добавления синтаксического сахара, в виде enum-ов, foreach, work-by-contract расширений и пр.) не были практически никем использованы. По разным причинам, в том числе и тут упоминавшимся — не работает со стандартными тулзами, реализует "немного не то, что нужно". Сам этот топик заведён по той-же причине — вот надо человеку notnull — а для него надо либо язык менять, либо целый компилятор новый писать — и потом всё равно это никто пользовать не будет.

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

Впрочем, не всё так печально — есть JSR 305, 308 и другие, расширяющие функциональность аннотаций и добавляющие средства мета-программирования в яву. Лет через 5 у вас будет стандартный для явы способ мета-программирования, основанный на AST между прочим. Тогда вам захочется большего, и средства вроде N или S вас не будут раздражать, а будет раздражать ограниченность явовских средств. Вот тогда и поговорим.

ЗЫ Кстати, мне тут мысля пришла в голову, наглядно объясняющая почему SymADE, Nemerle, Scala и иже с ними — не смогут вытеснить C#, Java и т.п. И заодно — как их надо продвигать, чтоб они стали мэйнстримом. Так что я пошёл работать, не буду тебя лишний раз раздражать.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[11]: notnull не очень хорошая идея
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 13.08.07 19:23
Оценка:
Здравствуйте, mkizub, Вы писали:

M>ЗЫ Кстати, мне тут мысля пришла в голову, наглядно объясняющая почему SymADE, Nemerle, Scala и иже с ними — не смогут вытеснить C#, Java и т.п. И заодно — как их надо продвигать, чтоб они стали мэйнстримом. Так что я пошёл работать, не буду тебя лишний раз раздражать.

Действительно интересно, почему?
Re[12]: notnull не очень хорошая идея
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 13.08.07 19:28
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Действительно интересно, почему?

А, все, уже прочитал: Грамотное развитие новых языков и средств программирования
Автор: mkizub
Дата: 13.08.07
, эко задвинули!
Re[4]: notnull не очень хорошая идея
От: Blazkowicz Россия  
Дата: 14.08.07 08:20
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>Разумеется нет. Но такой инструментарий должен быть независимым от производителя IDE.

Скажите это тем кто пользуется визуальными редакторами GUI. Которые поризводители IDE штампуют кто во что горазд без какой-либо совместимости.
Re[11]: notnull не очень хорошая идея
От:  
Дата: 14.08.07 08:56
Оценка:
Hello, mkizub!
You wrote on Mon, 13 Aug 2007 18:54:06 GMT:

YК>> Языконезависимость для решения данной проблемы — а именно

YК>> реализации контрактного программирования в Java — нафиг не
YК>> нужна.

m> Языконезависимость — это одна часть проблемы. Пусть она не волнует

m> данного пользователя, но в неявном виде она присутствует для
m> разработчика.
m> Я знаю несколько реализаций расширений для явы для решения данной
m> проблемы — и все они не пользуются успехом.
m> Это такие компиляторы как JML
m> (http://www.eecs.ucf.edu/~leavens/JML/), IntelliJ Idea, prototype
m> implementation для JSR 308 и многие предыдущие, частично описанные
m> здесь http://www.robert-tolksdorf.de/vmlanguages.html и много
m> просто академических проектов с разработкой закончившейся
m> написанием статьи и забытых.

m> Все эти решения, а равно и другие решения (вроде добавления

m> синтаксического сахара, в виде enum-ов, foreach, work-by-contract
m> расширений и пр.) не были практически никем использованы. По
m> разным причинам, в том числе и тут упоминавшимся — не работает со
m> стандартными тулзами, реализует "немного не то, что нужно".

О чем мы вообще говорим?
Контрактное программирование предполагает в первую очередь наличия трех вещей:
a) предусловий
б) постусловий
в) инвариантов класса
и соответственно требования выполнять контракт, формально выраженный для клиента предусловиями, а для поставщика — постусловиями. Об автоматизированном доказательстве корректности здесь речь не идет, это другая область.

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

Так причем здесь AST и SymADE?

m> Сам этот топик заведён по той-же причине — вот надо человеку notnull

m> — а для него надо либо язык менять, либо целый компилятор новый
m> писать — и потом всё равно это никто пользовать не будет.

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

m> Так что решить проблему контрактного программирования в Java можно

m> без работы с AST деревом. Только это решение, на практике, нафиг
m> никому не нужно.

Такие решения есть, они работают и не нуждаются ни в каких SymADE. Заканчивай с пиаром.

m> Впрочем, не всё так печально — есть JSR 305, 308 и другие,

m> расширяющие функциональность аннотаций и добавляющие средства
m> мета-программирования в яву. Лет через 5 у вас будет стандартный
m> для явы способ мета-программирования, основанный на AST между
m> прочим. Тогда вам захочется большего, и средства вроде N или S вас
m> не будут раздражать, а будет раздражать ограниченность явовских
m> средств. Вот тогда и поговорим.

Я говорю о конкретной вещи — контрактном программировании. Причем здесь мета-программирование? Чтобы в очередной раз SymADE упомянуть?
Posted via RSDN NNTP Server 2.1 beta
Re[12]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 14.08.07 09:23
Оценка:
Здравствуйте, YК, Вы писали:

YК>Там речь идет о проверке компилятором. К контрактному программированию это имеет отношение только тем, что формально выражается предусловие, т.е. контракт. Последующая проверка компилятором — это автоматическое обнаружение ошибок, верификация — называйте как хотите, только это не контрактное программирование. Последнее предполагает знание клиента или поставщика о контракте, и осознанное следование этому контракту.


а) топик о notnull — верификации условия на этапе компиляции или выполнения,
б) про контрактное программирование ты завёл речь, и естественно я решил, что ты этот термин употребляешь не как work-by-contract технику Эйфеля, а в более общем смысле.

Так что выбирай — или твой изначальный заезд с контрактным программированием не в тему, или мы говорим об общем случае контрактов, которые работают и в compile time. Как выберешь — так и продолжим.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[5]: notnull не очень хорошая идея
От: mkizub Литва http://symade.tigris.org
Дата: 14.08.07 09:27
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

>>Разумеется нет. Но такой инструментарий должен быть независимым от производителя IDE.

B>Скажите это тем кто пользуется визуальными редакторами GUI. Которые поризводители IDE штампуют кто во что горазд без какой-либо совместимости.

Наверное под словом "должен" он имел в виду идеальный для пользователя вариант, а не более распространённый — "хотели как лучше, а получилось как всегда".
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[13]: notnull не очень хорошая идея
От:  
Дата: 14.08.07 10:01
Оценка:
Hello, mkizub!
You wrote on Tue, 14 Aug 2007 09:23:05 GMT:

YК>> Там речь идет о проверке компилятором. К контрактному

YК>> программированию это имеет отношение только тем, что формально
YК>> выражается предусловие, т.е. контракт. Последующая проверка
YК>> компилятором — это автоматическое обнаружение ошибок,
YК>> верификация — называйте как хотите, только это не контрактное
YК>> программирование. Последнее предполагает знание клиента или
YК>> поставщика о контракте, и осознанное следование этому
YК>> контракту.

m> а) топик о notnull — верификации условия на этапе компиляции или

m> выполнения,
m> б) про контрактное программирование ты завёл речь, и естественно я
m> решил, что ты этот термин употребляешь не как work-by-contract
m> технику Эйфеля, а в более общем смысле.

Мало что ты там решил. Есть совершенно четкое определение контрактного программирования, данное Мейером. И именно о контрактном программировании шла речь в этой ветке, а не о верификации notnull.

m> Так что выбирай — или твой изначальный заезд с контрактным

m> программированием не в тему, или мы говорим об общем случае
m> контрактов, которые работают и в compile time. Как выберешь — так
m> и продолжим.

Мне выбирать незачем — речь шла о контрактном программировании. Ты бы лучше следил за темой разговора.
Posted via RSDN NNTP Server 2.1 beta
Re[13]: notnull не очень хорошая идея
От: Eugeny__ Украина  
Дата: 14.08.07 10:55
Оценка:
Здравствуйте, mkizub, Вы писали:

M>а) топик о notnull — верификации условия на этапе компиляции или выполнения,




А при чем время выполнения-то? ИМХО, про него речь не шла вообще.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.