|
|
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Petro123Мне на каждую входную Решение в коде принимать надо. Ну, не обязательно. Компилер, в теории, может сам спроецировать контракт. На практике, конечно, это не везде выходит. Т.е. если у метода стоит ограничени на аргумент, то оно же соответсвенно должно быть у переменной, которая в этот аргумент попадает. И тебе контракт у переменной прописывать не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:52:28 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Озверинчасто c++ вставки делаете в java? C++ это не платформа. Например Жгруви. Есть задача, которая на нем решается проще, чем на Java? Вперед, пиши модуль на нем. Озверинесли да, вам архитектор проекта спасибо выписывает регулярно? Я сам себе спасибо? Ну, разве что в устной форме. :)) ОзверинХотя по факту, вы перефразировали часть моих слов. Гослинг ещё черти когда заявил, что Java - отличная платформа. Как язык - говно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:56:13 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Добрый день, Petro123! > Мне на каждую входную Решение в коде принимать надо. А его и так принимать надо. У любой приличной java-функции контракт описан в комментариях. Его надо просто перенести в контракт. Но, блин, "чукча не читатель, чукча писатель"- авторы явы не знали, видимо, ничего, кроме С++ :( -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:56:33 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
BlazkowiczОзверинчасто c++ вставки делаете в java? C++ это не платформа. Например Жгруви. Есть задача, которая на нем решается проще, чем на Java? Вперед, пиши модуль на нем. Озверинесли да, вам архитектор проекта спасибо выписывает регулярно? Я сам себе спасибо? Ну, разве что в устной форме. :)) ОзверинХотя по факту, вы перефразировали часть моих слов. Гослинг ещё черти когда заявил, что Java - отличная платформа. Как язык - говно. я о платформе слово хоть сказал?:) Я говорил о зоопарке - это может быть что угодно, для чего требуются знания. Очевидная же проблема - сложность поддержки при неизвестной причине использования\внедрения(то есть расходы на поддержку довольно очевидно: обучения, сложности поиска новых сотрудников, а из чего складывается плюс зоопарка - черт его знает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:09:55 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
GKS_Samara, контракт (надо вики смотреть) - это статика. Т.е. при изменении контракта - рефакторинг кода. Для этого есть сигнатура метода\параметры\типизация. Т.е. контракт = интерфейс = или труба по перекачке данных. Можно обязать контракт на диаметр трубы, но не на содержимое в трубе. IMHO. Если будет тип входных данных Дата - будем проверять аннотацией по григорианскому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:18:49 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Добрый день, Petro123! > контракт (надо вики смотреть) - это статика. Т.е. при изменении > контракта - рефакторинг кода. Да. > Если будет тип входных данных Дата - будем проверять аннотацией по > григорианскому? Чем описывать - дело десятое. Всё одно в яве их нет. Можно и на дату ввести ограничение- например метод, принимающий дату рождения, может запретить даты больше текущей ;) -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:25:20 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
GKS_SamaraМожно и на дату ввести ограничение- например метод, принимающий дату рождения, может запретить даты больше текущей ;) ага.. и аннотацию @Alert(MessageBox\Raise\ТихоСъесть\ОтправитьПоМылу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 18:14:11 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
JetBrains надо делать деньги на продаже IDE. Им нужен позарез промежуточный язык для создания редакторов других языков, особенно, если в проекте допускается использование двух и более языков. Трудно создавать редактор для Scala (что мы и наблюдаем во всех IDE), имея в качестве базового только Java. Это не мое мнение - это один из первых пунктов в объянении jetBrains "для чего им нужен новый язык". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 19:37:51 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
VoDA Компания JetBrains объявила об Дальше можно не читать. Начхать на всё, что она может объявить (я только посмотрел немного комментарии - ничего особенного). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 21:26:12 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Valery ShiskinJetBrains надо делать деньги на продаже IDE. Им нужен позарез промежуточный язык для создания редакторов других языков, особенно, если в проекте допускается использование двух и более языков. Трудно создавать редактор для Scala (что мы и наблюдаем во всех IDE), имея в качестве базового только Java. Это не мое мнение - это один из первых пунктов в объянении jetBrains "для чего им нужен новый язык".тогда для чего они делают плагин Kotlin для Eclipse? Пока IDEA им приносит доход они будут развивать ее, как только перестанет - будут продавать другой ПО или услуги. Тот же самый continious integration в облако загонят. На текущий момент у них достаточно профессионалов чтобы делать проекты довольно высокой сложности. Потому Kotlin им нужен для того чтобы самим писать много-много-много продакшен кода. А чтобы язык жил и развивался нужна аудитория. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 23:10:38 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
GKS_SamaraЧем описывать - дело десятое. Всё одно в яве их нет. Можно и на дату ввести ограничение- например метод, принимающий дату рождения, может запретить даты больше текущей ;)В java легко реализуется и уже сделан контракт на данные - Bean Validation. А где есть контракт на вызов функции и насколько это помогает в реальной разработке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 23:12:45 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Добрый день, VoDA! > А где есть контракт на вызов функции и насколько это помогает в реальной > разработке? Есть в eiffel. Используют его нечасто- там свои тараканы, в частности нет бесплатных хороших компиляторов. Я пытался кое-ка это прикрутить к delphi и java - забавно, но полностью реализовать невозможно (в частности из-за наследования). -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 09:19:44 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
GKS_SamaraДобрый день, VoDA! Я пытался кое-ка это прикрутить к delphi и java - забавно, но полностью реализовать невозможно (в частности из-за наследования).Можно сделать на базе Spring через проксирование, а сами контракты прописывать аннотациями или через applicationContext. Только основной мой вопрос остался не отвеченным - какие действительные проблемные ситуации это решает в продакшен системах? как часто эти проблемные ситуации проявляются? и собственно сравнить затраты времени на поддержание контрактной системы и на поиск одного-двух багов, которые подпадают под эти контракты. Есть какие нибудь данные на эту тему? PS мысль, что если бы контракты реально помогали их запилили бы довольно давно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 11:53:38 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
VoDAМожно сделать на базе Spring через проксирование, а сами контракты прописывать аннотациями или через applicationContext. Oval как-то давно никто не вспоминает. Ну, и, в рантайме не так интересно. VoDAТолько основной мой вопрос остался не отвеченным - какие действительные проблемные ситуации это решает в продакшен системах? как часто эти проблемные ситуации проявляются? Идея такая, что исключение возникает не в том месте где используются невалидные данные, а в том где они только появляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 11:58:44 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
BlazkowiczVoDAМожно сделать на базе Spring через проксирование, а сами контракты прописывать аннотациями или через applicationContext. Oval как-то давно никто не вспоминает. Ну, и, в рантайме не так интересно. VoDAТолько основной мой вопрос остался не отвеченным - какие действительные проблемные ситуации это решает в продакшен системах? как часто эти проблемные ситуации проявляются? Идея такая, что исключение возникает не в том месте где используются невалидные данные, а в том где они только появляются. Присоединяюсь к вопросу VoDA. Я когда пытался работать с Oval (это было давно) был сильно разочарован тем, что мне приходится вручную валидацию вызывать. Т.е. мне бы хотелось это делать автоматически (VoDA об этом, насколько я понимаю) - чтобы исключение кидалось на вызов setter'а. Возможно, это реализуемо в Scala через какие-нибудь плагины к компилятору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:09:15 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИдея такая, что исключение возникает не в том месте где используются невалидные данные, а в том где они только появляются.А что мешает для всех сущностей написать сеттеры проверяющие валидность данных? как только собрали не валидную сущности, так сразу получили эксепшен... понятно что Runtime-time слабее Compite-time, но даже так можно достигнуть поставленной задачи. на той же Scala можно вместо базовых типов применять собственные типы, которые содержат ограничения. тогда можно и компилятором проверки делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:42:43 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
BlazkowiczVoDAСвойства в Kotlin есть, но я не увидел их как First Class Property. потому пока можно пользоваться свойством, но нельзя сослаться на свойство :(Блин :(Есть надежда В комментариях одного из разработчиков нашел псевдо-код: Код: java 1. Причем планируется и ссылка на конкретное свойство конкретного объекта и экстеншен свойства. a#b gives you a property object that you can read from/write to, and A#b give you an extension property object that you can call on instances of A Для ORM и обычных нужд нужны A#b, т.е. extention properties. Это аналог java.lang.reflect.Method для Kotlin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:57:15 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
VoDAА что мешает для всех сущностей написать сеттеры проверяющие валидность данных? как только собрали не валидную сущности, так сразу получили эксепшен. Ничего не мешает. Поэтому никто и не пользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:59:56 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
BlazkowiczVoDAА что мешает для всех сущностей написать сеттеры проверяющие валидность данных? как только собрали не валидную сущности, так сразу получили эксепшен. Ничего не мешает. Поэтому никто и не пользуется.значит удобство от такого рода контрактов перекрывается геморроем по поддержанию контрактов, т.е. контракты не выгодны. по крайней мере в текущей их реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 13:08:24 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Почитал все эти нуль-стенания, подумал ... Вроде бы, можно закрыть NPE и, вроде бы, с минимальными накладными расходами или вообще без оных. Проверка соответствия типов всё равно выполняется, так что определить "это null" - придётся, остаётся как-то выкрутиться, если null пришёл туда, где анонсировано его недопустимость. Если у класса есть "конструктор по умолчанию", то при загрузке класса среда исполнения может создать статический объект, а затем установить атрибут доступа "только чтение" на уровне VMM. Чтобы не получать AV - игнорируем запись в такие объекты. Пока, вроде, ничего неосуществимого и ничего ресурсоёмкого. Дальше всё относительно просто - "приводим null к RO-объекту подходящего типа". Но есть ньюанс. Накойхер (фамилие такое) заменять исключение на трудноуловимую семантическую ошибку? P.S. Да, я помню, что исключение должно кидаться тому, кто прислал null в непотребное место, но неужели так много желающих выкинуть весь или почти весь сторонний код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 17:56:09 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПроверка соответствия типов всё равно выполняется, так что определить "это null" - придётся, остаётся как-то выкрутиться, если null пришёл туда, где анонсировано его недопустимость. P.S. Да, я помню, что исключение должно кидаться тому, кто прислал null в непотребное место, но неужели так много желающих выкинуть весь или почти весь сторонний код?задача в том, чтобы null не мог придти туда, где его не ждут. в Kotlin это реализуется контрактом и статической проверкой. в том же Kotlin сторонний код можно выполнять, что при совмещении типов придется провести ОДНУ проверку на null. в java проверки на null приходится раскидывать по всему коду. и даже в этом случае периодически подрываешься на NPE когда начинаешь использовать старый функционал чуть по другому. PS был случай когда часть свойств в Entity завернули в embedded. каково же было мое удивление когда рабочий код в другой подсистеме начал взрываться от NPE. оказалось, что embedded может не инициализироваться если все поля пустые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 00:58:37 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
VoDA, да, отложенная инициализация в Java действительно проблема. Я вот думаю, почему её нет (нет?) в других ЯП. Вероятно, потому, что парадигма - распределённый межсистемный код. Или так сказать - межгетерогенный код (через Веб-медленный канал). Тут действительно нужен опыт из других сетевых ЯП. По крайней мере, было бы замечательно, чтобы эта _техническая проблема_ не торчала снаружи как пример аннотаций @МодельТранзакции. Как пример, инкапсуляции таких проблем, в Get или Property добавить код if Obj = Null then new Obj Верхние слои понятия не имеют в какой момент объект будет создан. Провда, учитывать ЭТО программисту тоже приходится - что есть минус. VoDAв том же Kotlin сторонний код можно выполнять, что при совмещении типов придется провести ОДНУ проверку на null мож я пропустил, как и где там делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 15:04:40 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Petro123VoDAв том же Kotlin сторонний код можно выполнять, что при совмещении типов придется провести ОДНУ проверку на nullмож я пропустил, как и где там делается?Это принцип в Kotlin переменные удобно и практично определять как Int, String. Т.е. notnull переменные. Любой возврат из java кода расценивается как Int? и String? т.е. nullable переменные. из одной переменной в другую записать можно только после проверки на null. PS попробовал на Kotlin писать код. Действительно удобно. А главное зная java на kotlin начинаешь программировать уже минут через 5-7. максимум это понять какие есть ключевые слова типа 'in'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 13:12:04 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
VoDAзадача в том, чтобы null не мог придти туда, где его не ждут. в Kotlin это реализуется контрактом и статической проверкой.Где гарантия, что код не может нарушать контракт? P.S. Если бы всё было так просто - доказательство корректности программ уже вовсю использовалось бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 19:12:41 |
|
||
|
Новый язык для java разработчиков - Kotlin
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovVoDAзадача в том, чтобы null не мог придти туда, где его не ждут. в Kotlin это реализуется контрактом и статической проверкой.Где гарантия, что код не может нарушать контракт? P.S. Если бы всё было так просто - доказательство корректности программ уже вовсю использовалось бы.ты сильно не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 20:00:36 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37665663&tid=2132520]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
43ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
92ms |
get tp. blocked users: |
3ms |
| others: | 327ms |
| total: | 521ms |

| 0 / 0 |
