All streams
Search
Write a publication
Pull to refresh
51
0

Пользователь

Send message
Отличная идея, но есть один фатальный недостаток: многократное увеличение размера.
Недостаток при сравнении с чем? В человекочитаемых конфигах на JSON используются также отступы в 4 пробела на один уровень.

предлагаю написать транслятор в json.
Это уже возможно в рамках текущей реализации.
Python:
string_in_json = json.dumps(thindf.parse(string_in_thindf))
JavaScript:
string_in_json = JSON.stringify(thindf.parse(string_in_thindf));
Давайте не будем голословны.
Примеры в статье вполне реальны и именно на такое standalone применение и ориентирован новый формат в первую очередь. Но улучшение читаемости не повредит и в применении для всяких API.

А там где
не нужно чтение человеком
лучше подойдёт BSON или Protocol Buffers.
Хм, а вы сами используете YAML?
ИМХО, это слишком переусложнённый формат.
Поэтому для конфигов чаще используют JSON и даже XML.
Ну JSON используется не только в вебе, но и, к примеру, для файлов конфигурации. Именно для таких применений данный формат и создавался в первую очередь.
В текущей реализации, увы, нельзя.
Вы [или возможно кто-нибудь другой {хороший пример в любом случае пригодится}] не могли бы привести пример реально использующегося где-либо json файла, в котором такая запись будет лучше, чем:
personal
    host = 5060852864
    is_team = 0B
?

(Предполагаю, должно быть много таких элементов.)
В данном языке кортежи работают как std::tuple из C++, а не как в Python (хотя и используют синтаксис Python-а). То есть добавлять элементы нельзя, но изменять имеющиеся можно. (При программировании на Python я сам неоднократно сталкивался с потребностью именно в таких tuples\кортежах, и в Python-е приходилось использовать массивы вместо кортежей в этих случаях.)

Кроме того, tuple до 4-х элементов включительно работают как вектора в GLSL: можно например использовать запись (255, 0, 0) для задания красного цвета (т.е. (255, 0, 0).r = 255, а .g и .b равны 0) или трёхмерного вектора ((1, 2, 3).y = 2). Также есть swizzling: (255, 0, 0).bgr = (0, 0, 255). Это [встроенный тип для вектора/точки/цвета] очень удобно для работы с изображениями и вообще с графикой (2D и 3D). В C++ приходится выбирать какую-либо библиотеку (и из-за отсутствия поддержки векторов/точек в языке C++ каждый 3D-движок вынужден предоставлять собственную реализацию векторов [{на правах рекламы: в мной разработанном 3D-движке для ММОРПГ игры вполне успешно использовалась моя же библиотека Handy Math Library}]).
Вот только в нормальные массивы элементы добавлять нельзя

Для этого есть кортеж\tuple: (1, 2, 3).

Что успешно реализовано? Я задал два конкретных вопроса: какого типа persons, и что конкретно случилось с памятью в момент persons [+]=.
[Решил ответить, хоть и поздновато, но вдруг кому-то это не очевидно:] в строке A persons = [] задаётся основной тип переменной persons как массив (в Python — list, а я предлагаю название Array [а List использовать для связных списков]), то есть эту строку можно переписать как Array persons. В C++ бы пришлось указывать тип элементов массива и писать Array<Person> persons.

какого типа persons
В данном языке — Array[Person].

Более того, в Nemerle type interference (в этом месте) сделан для generic parameter, а окаймляющий класс задан явно.
На основе вышесказанного — "окаймляющий класс" в данном примере также задан явно (только в примере Nemerle используется словарь, а у меня массив).

и что конкретно случилось с памятью в момент persons [+]=.
Оператор [+]= как можно догадаться добавляет элемент в массив (аналог Python-овской функции append [или записи arr += [item]] и push_back из C++). Поведение оператора [+]= аналогично, и то что произойдёт с памятью — зависит от реализации (implementation-depend в терминологии C++). Я считаю, что в данном случае можно выделить память для одного элемента массива, а в последующем придерживаться стратегии полуторакратного резерва.
Не могу объяснить. Пишу просто так как чувствую. Классическое употребление квадратных скобок для необязательных слов я смешиваю со своим пониманием.
Это существенная черта языка, странно что вы упоминаете её очень вскользь.

Хорошо, добавил в статью Обратите внимание, что использование отдельных символов для открывающей и закрывающей кавычек предоставляет возможность неограниченной вложенности элементов форматирования.

Министерство Обороны?
Эх. Не умею я шутить, да...
Но с другой стороны, вот пример проекта, который используется военными:
obzor.westsib.ru/article...:
Например, военные на основе нашего движка делают виртуальные тренажеры для работы с новой секретной техникой.

И я уверен, что отечественный разработчик был не последней причиной выбора этого движка.
Все подробности здесь:
ничего особенного с тех пор мне так и не пришло. Ну и никакого исходного кода никакой операционного системы или Искусственного Интеллекта я также не получал, как можно догадаться. То были лишь игры моего разума.

Добавлю только, что здесь:
исходный код ДЕйВОСи[с] написан на [совершенно] новом языке программирования.
речь идёт о другом языке программирования, а не предлагаемом в данной статье.
А что такое МО?
Что у вас в голове вообще творится?

Да вообще чёрт знает что. :)(:

Вы не согласны с тем, что компилятор неразрывно связан с ‘наблюдаемым поведением’?

… а если мне нужен append, или, того хуже, atomic append?

‘Это’[‘подобное’], скорее всего, лучше делать через специальное имя файла, например: open(‘ram:myfile’) открывает файл в оперативной памяти (файл доступен до закрытия [приложения или файла] всем подпрограммам/подприложениям, запускающимся из данного приложения/программы). Или так: open(‘memory:myfile’) или open(‘sharedmemory:myfile’) [в первом случае файл виден только данному приложению и всем приложениям, запущенным из данного, а во втором — файл виден всем сторонним приложениям].


Открытие в режиме append я предлагаю заменять дополнительным вызовом функции-члена/метода seek():


A f = File(fname)
f.seek(END)
Хм, я не заметил.

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Registered
Activity