powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Правила хорошего COSa
55 сообщений из 55, показаны все 3 страниц
Правила хорошего COSa
    #39126875
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Выработали в московском офисе Code Guidlines для Cache ObjectScript.

Это рекомендация для публикации проектов на Cache в github.com/intersystems-ru , но помоему это хорошая рекомендация для любых проектов на COS вообще. Замечания и предложения приветствуются - добавляйте ваши issues , разумное внесем.


Блог InterSystems на Хабре http://habrahabr.ru/company/intersystems/
Каталог статей по технологиям InterSystems http://intersystems.ru/cache/devcorner/habrahabr.html
Видеоканал InterSystems Russia http://www.youtube.com/user/intersystemsrus
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39126983
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправьте синтаксическую ошибку:

Set obj = Do ##class(Sample.Person).%New(initexpresion)

Стоит ли настаивать на #dim?
- псевдодекларации в бездекларативном языке могут вводить в заблуждение неофитов,
- автодополнение в последних версиях Студии и без #dim работает неплохо.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127003
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovИсправьте синтаксическую ошибку:

Set obj = Do ##class(Sample.Person).%New(initexpresion)

Пофиксили
Alexey MaslovСтоит ли настаивать на #dim?
- псевдодекларации в бездекларативном языке могут вводить в заблуждение неофитов,
- автодополнение в последних версиях Студии и без #dim работает неплохо.

Да. Ну впрочем это в Recommendation Part, а не в Mandatory.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127051
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,


У нас есть внутренний инструмент coslint, написанный Сашей Кобловым, который пропагацию типов в выражениях делает на основе информации из #dim. (Да синтаксис многословен, и выглядит чуждо, и скорее не по мампсовому а по бейсиковому, но это единственной что есть и что будет)
Для Atelier будет написан свой linter (уже на java) но работать он будет по схожему принципу. Посему, считайте это forward compatble рекомендацией.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127114
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur Safin,

Давайте попробуем честно (без скрытой рекламы) ответить на простые вопросы. Вот мои варианты ответов.
1) В языке COS есть декларируемые типы данных? - Их нет.
2) Студия справляется с автодополнением без #dim? - Да.
3) Но Ateleir не справляется, как ему помочь? - Это проблемы разработчиков Atelier. Студия 5-летней давности тоже не справлялась.
4) Нужны ли в языке синтаксические конструкции, не соответствующие его семантике, а служащие лишь костылями для сыроватых инструментов? - Воздержусь от ответа :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127132
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov2) Студия справляется с автодополнением без #dim? - Да.
Не всегда, есть особо хитрый код, когда это не работает.
и опять же #dim был придуман для сырой Студии
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127155
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorНе всегда, есть особо хитрый код, когда это не работает.Кто же спорит, и даже не особо хитрый: достаточно воспользоваться косвенностью или рекомендуемыми вместо неё $method/$classmethod - и никакой #dim не поможет.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127157
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovTimur Safin,

Давайте попробуем честно (без скрытой рекламы) ответить на простые вопросы. Вот мои варианты ответов.
1) В языке COS есть декларируемые типы данных? - Их нет.
2) Студия справляется с автодополнением без #dim? - Да.
3) Но Ateleir не справляется, как ему помочь? - Это проблемы разработчиков Atelier. Студия 5-летней давности тоже не справлялась.
4) Нужны ли в языке синтаксические конструкции, не соответствующие его семантике, а служащие лишь костылями для сыроватых инструментов? - Воздержусь от ответа :)

Некоторые разработчики пишут #dim не для Code Completion в студии, а для большей читаемости кода, чтобы понимать, что это объектная переменная и именно такого класса.
Я ленюсь так делать, но когда вижу чужой код с #dim - это более читаемый код.
Т.е. еще раз - это рекомендация, а не обязательное требование.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127166
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийЯ ленюсь так делать, но когда вижу чужой код с #dim - это более читаемый код.Я тоже ленюсь :), кроме того, меня раздражает, что в эту переменную можно поместить всё что угодно, и "мне за это ничего не будет". Значит, увидев такую команду в чужом коде, я не могу быть ни в чём уверен.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127193
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovДавайте попробуем честно (без скрытой рекламы) ответить на простые вопросы. Вот мои варианты ответов.

Это не скрытая реклама, это опыт вынесенный из жизни. Сашин линтер берет информацию о типах из аргументов и #dim, и для того, чтобы сделать его более счастливым при анализе моего кода приходилось расставлять #dim. Даже и без линтера #dim добавляют читабельность коду, посему эту практику решили рекомендовать в своих проектах.

Еще раз, это рекомендация, и каждый волен её проигнорировать или принять к сведению. Мы свои аргументы рассказали.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127290
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аргументы понятны. Читабельность улучшается, с этим не спорю.
Timur SafinСашин линтер берет информацию о типах из аргументов и #dim...Встречный вопрос: будет ли этот инструмент опубликован?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127373
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovВстречный вопрос: будет ли этот инструмент опубликован?

Может быть, как просить, много неподдерживаемого там замешано (API не будет никогда опубликовано, серверная поддержка там заморожена из-за Atelier, и все такое). Как минимум, можно попробовать поиграться с объектным кодом, для конкретной версии.

Давайте проведем это через официальные каналы?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127377
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С другой стороны, в Atelier линтер предполагатся реализовать на стороне IDE на Java. С использованием инфраструктуры созданной для Atelier. И сообщество здесь может помочь получить этот результат скорее раньше чем позже...
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127443
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur SafinКак минимум, можно попробовать поиграться с объектным кодом, для конкретной версии.Спасибо, без исходников неинтересно. Если развитие заморожено, то тем более.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127947
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovСпасибо, без исходников неинтересно. Если развитие заморожено, то тем более.

Непонятно, Алексей Игоревич, а почему неинтересно? Если этот инструмент будет делать свою уникальную функцию и делать в отсутствие альтернативы еще около года или более?

Кого-то смущает отсутствие исходников кода, который, скажем, раскрывает короткие инструкции в полные в Студии (Ctrl+E)? Или который делает рефакторинг переименованием? Или который увеличивает отступы в выделенном блоке? Нет, это всего лишь функции набора инструментов, используемого сегодня разработчиками в Cache'. И так получилост что у нас есть еще и (неидеальное, но) решение для еще одной полезной функции - статической проверки кода, которая, кстати, была сделана на базе того же набора классов, что и используется кодом рефакторинга. Да, этот серверный фреймворк, в силу текущих приоритетов, не будет меняться, а будет создаваться (когда-нибудь) клиентская поддержка. Но такая стабильность серверного API сегодня - даже может быть и хорошо, это значит, что при смене версии (неподдерживаемый официально) API не поплывет, и инструмент продолжит работать.

Да и кого из сообщества когда останавливал статус неподдерживаемого API? Если он был полезен уже _сегодня_? Вот вы в СП.АРМ и многие в других местах используете %Net.RemoteConnection, кого-то останавливает что это API давно deprecated? :)

P.S.
Если кому очень нужен COS linter - обращайтесь, мы найдем способ донести его (в том или ином виде) до ваших серверов.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127979
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что я скажу - вкусовщина, но тем не менее.
Для чего нам нужны большие буквы? Они нам нужны для выделения акцентов или разделения компонент в сложных идентификаторах. Для чего рекомендовать полные длинные ключевые слова? Чтобы читающий программист увидел, что Set - это Set? Как минимум каждая вторая строка - Set. Зачем делать на ней акцент? Я понимаю, есть смысл выделить, например, имя класса, но зачем для постоянно используемых ключевых слов это делать? "s", "d", "q" более чем достаточно. Для более редко используемых ключевых слов достаточно их полного названия. Я понимаю, в случаях, когда предполагается чтение кода программистами, не знающими COS использование длинных ключевых слов повышает читаемость кода, но там ли часто мы пишем для них?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127991
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н...."s", "d", "q" более чем достаточно. ...Относительно "s" и "d" соглашусь - по факту ключевые, а по смыслу шумовые слова, наследие чистых интерпретаторов. Basic давно избавился от "let", MUMPS'у от "set" не избавиться, по-видимому, никогда.
А quit quit-у рознь, иногда хочется выделить выход из цикла.
Впрочем, конечно, всё это вкусовщина :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39127994
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur SafinНепонятно, Алексей Игоревич, а почему неинтересно?Потому что будь он в исходниках, мы, возможно, доработали бы его под свои нужды.
А так - нет его, и Аллах с ним. Напишем свой.

P.S. С трудом верится, что использование внутреннего API может быть причиной закрытия исходников. В cachesys полно открытого кода, использующего всевозможные внутренние API, полно кода потенциально опасного, (который я естественно не буду цитировать на форуме), однако это никого не волнует.

P.P.S. А то что API сегодня рекомендуется, завтра заморожено, послезавтра снова разморожено - к этому привыкли и не боимся, слава Богу, уже 15 лет в Cache :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39128011
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

Ладно, по поводу quit соглашусь. Я тоже for, open, if не сокращаю.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39128330
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovБлок А.Н...."s", "d", "q" более чем достаточно. ...Относительно "s" и "d" соглашусь - по факту ключевые, а по смыслу шумовые слова, наследие чистых интерпретаторов. Basic давно избавился от "let", MUMPS'у от "set" не избавиться, по-видимому, никогда.
А quit quit-у рознь, иногда хочется выделить выход из цикла.
Впрочем, конечно, всё это вкусовщина :)

Согласен, что set и do можно было бы вообще упразднить.

По поводу длинных команд: сам пишу в сокращенном виде, но студии есть комбинация Alt+E, которая все команды превращает в длинную форму - делаю это перед коммитом. Читабельность кода на мой взгляд повышается.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39128371
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгенийно студии есть комбинация Alt+E, которая все команды превращает в длинную форму Ctrl+E
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129193
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полные имена команд в mandatory... Кто-то будет икать. Долго :)
Шваров Евгенийно в студии есть комбинация Ctrl+E
ДокументацияCtrl+E In an ObjectScript document, commands in a selection are replaced with their full names.
Т.е. Ctrl+A и Ctrl+E каждый раз на каждом классе. Можно было бы понять и простить автоматизировать как здесь , но есть ли API?

Шваров ЕвгенийСогласен, что set и do можно было бы вообще упразднить.
С set чревато, например
Код: plaintext
if var = ..someMethod()

Вместо лаконичного и стремительного М - многословный COS с вшитым UpperCase, %New, ##class. Теперь еще #dim - красоты не добавит и большинства проблем не решит.

Что слышно насчет нового языка ( js )?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129286
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintШваров ЕвгенийСогласен, что set и do можно было бы вообще упразднить.
С set чревато, например
Код: plaintext
if var = ..someMethod()

Я не понял чем чревато? (Пример был дан с if-ом старой формации, тогда как Женя говорил про ненужность ключевого слова if и do для парсинга присвоения и вызова функции при LL(n) грамматике)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129300
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз попытаюсь донести причины обязательного полного именования инструкций:
- мне все равно как пишут старые мампсеры, в своих внутренних проектах они могут по-прежнему использовать голый односимвольный MUMPS;
- но мне не все равно как код, который мы выложили в своих внешних open-source репозиториях, будет выглядеть в глазах новичков.

Я не хочу чтобы у них сразу взорвался мозг, и хочу чтобы наши проекты были хотя бы частично понятны любому новичку со средним бекграундом с JavaScript/Basic/другой язык общего назначения. С первого взгляда. Это сложная, но решаемая задача: надо пытаться писать писать просто, без извращенных идиом, без точечного синтаксиса, правильно используя отступы в блоках "нового" вида, разумно комментируя и разумно именуя.

Полное написание языковых конструкций и встроенных функций с этой точки зрения - первый, обязательный шаг. Код должен быть понятен.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129415
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur SafinЯ не понял чем чревато?Тем, что если упразднить set, надо будет как-то разделять оператор присваивания от оператора сравнения
Код: plaintext
1.
2.
if ( var = ..someMethod() ){ ;Присвоили и проверили, или сравнили
 // 
}

Timur SafinПолное написание языковых конструкций и встроенных функций с этой точки зрения - первый, обязательный шаг Точка зрения понятна. Вопрос остался - можно ли это автоматизировать?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129421
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintЧто слышно насчет нового языка ( js )?Самим нужно делать, иначе никак
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129605
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur SafinЯ не понял чем чревато? (Пример был дан с if-ом старой формации, тогда как Женя говорил про ненужность ключевого слова if и do для парсинга присвоения и вызова функции при LL(n) грамматике)

Только я говорил не об if и do, а про set и do. Что, без if тоже можно обойтись? )
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129674
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнится, была в M-Computing статья Винфреда Герума, известного в 90-е мампсиста, о том, что для написания кода достаточно одной команды Quit . С примерами.
Надо будет поискать, может, оригинал сохранился.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129816
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintПолные имена команд в mandatory... Кто-то будет икать. Долго :)

Вместо лаконичного и стремительного М - многословный COS с вшитым UpperCase

UpperCase-то зачем? )

Вообще, по большому счету это вопрос бьютифаера перед коммитом. И симметричного "обфускатора" при чекауте ;)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129820
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintTimur SafinЯ не понял чем чревато?Тем, что если упразднить set, надо будет как-то разделять оператор присваивания от оператора сравнения
Код: plaintext
1.
2.
if ( var = ..someMethod() ){ ;Присвоили и проверили, или сравнили
 // 
}


== вместо =
?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129835
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то обсуждения правил написания кода, начинает скатываться в изобретение нового языка, а иначе это не назовешь, ну точно не развитие M
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129860
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тимур Сафинлюбому новичку со средним бекграундом с ... другой язык тогда еще и скобки в математических выражениях x + y * z

Шваров ЕвгенийЧто, без if тоже можно обойтись? )постусловия же ;)

Шваров ЕвгенийUpperCase-то зачем? ) %UnitTest , %Zen , ZenMojo

Шваров ЕвгенийВообще, по большому счету это вопрос бьютифаера перед коммитом.Полностью согласен, но беглым поиском по пакету %Studio ничего похожего не нашел.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129865
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений== вместо = ? Совместимость? ИнтерСистемс известна своим бережным отношением к старым мампсерам и стандартам программному коду, написанному десятилетия тому назад :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129874
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений== вместо =
И потом, как в соседней вселенной JS, надо будет вводить тождественность
if ( 3 == "3" ){ /* some code */ }
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129896
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintШваров Евгений== вместо =
И потом, как в соседней вселенной JS, надо будет вводить тождественность
if ( 3 == "3" ){ /* some code */ }
Как сказал Daimor уже - это обсуждение чего-то нового и не факт, что осуществимого ;)

Возможно гайдлайнс не очень совершенны на текущий момент и не всем подходят, но лучше иметь такие, чем не иметь совсем.

Предложения принимаются (и подаются чуть-ли не каждый день).
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39129921
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений, так нет возражений, стандарты это хорошо ( всячески поддерживаю, давно пора ... )

Только дайте API не обязывайте соблюдать их в ручном режиме ради маловероятных сценариев

ничего не подозревающий программист на любом другом языке окажется в нашей вселенной и мозг у него взорвется именно от s,d,Q,w,k,m,h, а не от ##class, #define, $$$, %New, %, ^, "множественного" хранимого наследования, и т.д. .
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39130750
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39136340
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в том же репозитории появился на мой взгляд весьма полезный документ.
Cheat sheet (шпаргалка) по COS командам.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39136551
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovПомнится, была в M-Computing статья Винфреда Герума, известного в 90-е мампсиста, о том, что для написания кода достаточно одной команды Quit . С примерами.
Надо будет поискать, может, оригинал сохранился.
Я еще помню был пример строки на COS, где используются все буквы алфавита по очереди. И эта строка работает.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39136577
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийЯ еще помню был пример строки на COS, где используются все буквы алфавита по очереди. И эта строка работает.
Код: plaintext
1.
A  B:C  D E F G=H:I:J K:L M N O,P Q:R  S T=UVW X YZ
E
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39136592
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorШваров ЕвгенийЯ еще помню был пример строки на COS, где используются все буквы алфавита по очереди. И эта строка работает.
Код: plaintext
1.
A  B:C  D E F G=H:I:J K:L M N O,P Q:R  S T=UVW X YZ
E

Вот да! :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39165104
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийUpperCase-то зачем? )
Хм. Из статьи про JSON в 2016.1 - "системные" методы:
Код: plaintext
1.
2.
3.
4.
 set object = ##class(%Object).$new()
 ...
 do ##class(%AbstractObject).$fromJSON( jsonstr )
 ...
 write oJSON.$size()
Консистентненько. Вангую шквал эмоций от новичков COS и не только :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39165642
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint ,

Можно и покороче:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set object = ##class(%Object).$new()
set object = {}

set object = ##class(%Array).$new()
set object = []

s jsonstr="[1,2,3,{""a"":1}]"
s oJSON = ##class(%AbstractObject).$fromJSON(jsonstr)
s oJSON = ({}).$fromJSON(jsonstr)
w oJSON.$size()
                    
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39166157
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

Если cчитать $ как "Uppercase S" то вполне CamelCase получается! :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39169559
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitМожно и покороче:
s jsonstr="[1,2,3,{""a"":1}]"
s oJSON = ({}).$fromJSON(jsonstr) что, легко превращается в
Код: plaintext
1.
2.
#define json(%jsonstr) ({}).$fromJSON(%jsonstr)

 s obj = $$$json("[1,2,3,{""a"":1}]") ; еще бы избавиться от четверных и т.д. кавычек
Timur SafinЕсли cчитать $ как "Uppercase S"Обычно основной упрек к наше-всё-COSу звучит как - "слишком много спец-символов" - %#$^@.
Но ведь $ много не бывает, они даже лучше чем % :)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39169580
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintНо ведь $ много не бываетМУДРЫЕ СЛОВА!!!
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39170204
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

у меня к $$$ отвращение, $$ воспринимаю как необходимое зло, $ - нормально.
Как-то странно для множества различных конструкций использовать один и тот же символ.
Давайте продолжим и заменим
+ на $$$$
- на $$$$$
* на $$$$$$
/ на $$$$$$$
= $$$$$$$$
и получим не 1+1*2=4, а 1 $$$$ 1 $$$$$$ 2 $$$$$$$$ 4
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39170638
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н., я надеялся на то, что в моем сообщении явно читается сарказм и раздражение.
Имхо, символ $ хуже визуально отделяется от текста, чем %.
Добавление к пафосно-многословному obj.%CamelCaseStyle js-подобного obj.$lowerCase, можно было бы заменить указанием какого-нибудь параметра к методу, например [ System = 1 ].
А так получается какой-то 1337 язык программирования.

P.S.
Вот интересно, динамические объекты у нас уже есть
Код: plaintext
s obj = $$$json("{ ""name"": ""COS"" }")
, сколько осталось ждать функций высшего порядка? ;)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39170746
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintБлок А.Н., я надеялся на то, что в моем сообщении явно читается сарказм и раздражение.
Имхо, символ $ хуже визуально отделяется от текста, чем %.
Добавление к пафосно-многословному obj.%CamelCaseStyle js-подобного obj.$lowerCase, можно было бы заменить указанием какого-нибудь параметра к методу, например [ System = 1 ].
А так получается какой-то 1337 язык программирования.

P.S.
Вот интересно, динамические объекты у нас уже есть
Код: plaintext
s obj = $$$json("{ ""name"": ""COS"" }")
, сколько осталось ждать функций высшего порядка? ;)Эх, эти бы комментарии вот сюда ?
Задать вопрос непосредственно автору нововведения?
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171146
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений, там царит благожелательная и добродушная атмосфера.
Не хочется портить людям праздник некорректным поведением:
быстрый JSON?! только в 2016.2?! Да еще так мля, через ж... неудобно?
Ну если смогли внедрить конструкцию вида
Код: plaintext
({}).$fromJSON("{""name"":""COS""}")
, что же не доделать до
Код: plaintext
s obj = ({"name":"COS"})
без этих сладких двойных двойных кавычек и .$lowerCase
;)
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171157
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintчто же не доделать до
Код: plaintext
s obj = ({"name":"COS"})
без этих сладких двойных двойных кавычек и .$lowerCase
;)Ну если вы просите...
Код: plaintext
1.
2.
3.
4.
5.
USER>set obj = ({"name":"COS"})
 
USER>write obj.$toJSON()
{"name":"COS"}
USER>write $zv
Cache for Windows (x86-32) 2016.2 (Build 582U) Sun Jan 24 2016 19:33:11 EST
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171168
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Коблов,
ну вот. могут же
что тут скажешь. виноват :)
спасибо!
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171188
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintШваров Евгений, там царит благожелательная и добродушная атмосфера.
Не хочется портить людям праздник некорректным поведением:
быстрый JSON?! только в 2016.2?! Да еще так мля, через ж... неудобно?
Ну если смогли внедрить конструкцию вида
Код: plaintext
({}).$fromJSON("{""name"":""COS""}")
, что же не доделать до
Код: plaintext
s obj = ({"name":"COS"})
без этих сладких двойных двойных кавычек и .$lowerCase
;)Я был бы очень благодарен если кто-нибудь добавил в этот мед немного здоровой объективности. Для этого же портал, да? Чтобы разработчикам прямо сказать, что есть "не совсем удобно" в предлагаемых подходах разработки ПО.
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171236
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint ,

Было: 18258299 doublefintбыстрый JSON?!Результаты по скорости приводились: 18772953 doublefintтолько в 2016.2?!Примеры кода приводились уже для 2015.3 (нынешняя 2016.1): 18038888 , 18194269 , 18310383
...
Рейтинг: 0 / 0
Правила хорошего COSa
    #39171401
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit, я к тому, что поддержка JSON - это тема 2009-2010 года, а не 2015. Сейчас бы обсуждать поддержку JSON-schema и сравнивать производительность шины Ensemble на xml и json :)
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Правила хорошего COSa
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]