All streams
Search
Write a publication
Pull to refresh
51
0

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

Send message
Эмм… Не понял, если честно, ваш вопрос. Вы имеете в виду, почему не так:
while (true) {
    switch (instr[i]) {
...

Или как вы предлагаете не "увеличивать кол-во C++-кода"? Ведь фигурные скобки в этом примере необходимы и являются требованием языка C++.

В контексте питона(и 11l) вы не можете сказать «мне удобнее/привычней» выделять блоки «скобкой на новой строке», а не отступом.
Почему не могу? 11l позволяет выделять блоки как отступом так и/или фигурными скобками.
Главная проблема Cython [и главное препятствие на пути его широкого распространения] с моей т.з. — аннотации типов в нём задаются по-своему, отлично от Python Type Hints (доступных начиная с Python 3.5).

А также, насколько я понял, нет достаточно удобного отладчика для Cython (кроме DDD ничего не нашёл). [Для 11l это не такая острая проблема, так как можно отлаживать Python-код перед отдачей его транспайлеру Python → 11l, а с Cython так не получится, так как код на нём написанный не совместим с Python.]
Да, только они называются типами (как в Go).
Коротенький пример есть в документации.
По умолчанию типы в 11l являются "типами-значениями" [а не "типами-ссылками"] и работают как структуры (struct) в C или C++.
В случае, когда тип Type ссылается сам на себя, Type заменяется на SharedPtr<Type> (см. первый пример отсюда).
В случае, когда тип Type содержит виртуальные функции, Type заменяется на std::unique_ptr<Type> (пример).
А можете привести самые удачные?
Просто я толковых проектов не нашёл (помимо упомянутых в статье Nuitka и Shed Skin, я попробовал py14, Pythran и Py2C).
Очень бы хотелось увидеть пример хорошего использования декораторов.
Вы не могли бы дать ссылочку на код [если он в open source, разумеется]?
Буду крайне признателен.
Также как в Python: обращение за пределы массива бросает исключение IndexError.
Ну, начиналось всё с преобразователя 11l → C++. О компиляции/ускорении кода на Python я тогда вообще не думал.
И лишь спустя полгода была начата работа над Python → 11l.
Почему не над Python → C++?
Ну, во-первых, 11l гораздо ближе к Python, чем C++ к Python.
Во-вторых, не буду скрывать, проект Python → 11l задумывался с целью популяризации языка 11l.
С моей точки зрения они только запутывают [на основе опыта перевода этого кода с декоратором @methodкод без декоратора получился более понятным].
А "стандартные" декораторы (@property, @classmethod, @staticmethod), имхо, лучше поддерживать в синтаксисе языка программирования.

Впрочем, я поторопился с ответом. И если получится найти несложный способ реализации декораторов, то можно и добавить их поддержку.
На данном этапе, увы, нет.
В этом проекте слишком много чего импортируется и слишком много возможностей Python используется.
[[[А декораторы поддерживать вообще не планируется.]]]
Здорово! А я не догадался…
Но это не снимает вопрос о том, где смотреть код функции img.load(). [А, уже ответили выше.]
Эм. А что такое img? Имя модуля? И где посмотреть код этой img.load()?
А может кто-нибудь объяснить как работает вот эта строчка кода?
pix[X, Y] = (255, 255, 255)
(я думал, что правильно писать так: pix[X][Y] или pix[Y][X])

Просто если pix = [[1, 2], [3, 4]], то pix[0, 1] у меня выдаёт ошибку ‘‘list indices must be integers or slices, not tuple’’.
Да, я уже видел вашу статью. Но, если честно, не очень впечатлили возможности этого формата (нет комменатриев и массивов [а это и правда удобно, когда формат данных гладко ложится на структуры данных используемого языка программирования (или вы при решении задач никогда не пользовались массивами?), и в этом я вижу основную причину такой популярности JSON]).
У вас в статье заявлена реализация на TypeScript/JavaScript, но я её не нашёл.
И с примерами вы "читерите":
Примеры файлов на разных языках: github.com/nin-jin/tree.d/tree/master/formats
Берём sample.json:
{ "users" : [
{
    "name" : "John",
    "age" : 30
},
{
    "name" : "John",
    "age" : 30
}...
Сразу мне стало интересно как этот пример, использующий массив users, ляжет на ваш формат, который массивы не поддерживает.
В sample.tree видим:
user
    name \John
    age 30
user
    name \John
    age 30

Ещё интереснее. Как получили строки user? Неужели конвертер настолько умный, что догадался откусить признак множественного числа — последнюю букву 's' в слове users?
Оказалось, ничего подобного.
Вот результат честной конвертации:
ideone.com/9rlHxi:

dict * 
    \users
    : list 
        dict 
            * 
                \name
                : string \John
            * 
                \age
                : int \30
        dict 
            * 
                \name
                : string \John
            * 
                \age
                : int \30

И вы поставили человекопонятность этому формату пятёрку?

P.S. Для ленивых вот результат конвертации sample.json в YAML и thindf:
YAML:                            thindf:
                                 
---                              
users:                           users = [          
- name: John                     .   name = John    
  age: 30                            age = 30
- name: John                     .   name = John
  age: 30                            age = 30
...                              ...
                                 ]
Почему не русская?
В 0В и 1В допускается использовать как английскую, так и русскую В.

Ну да. Точка является обозначением начала нового подобъекта в массиве (аналогично в YAML используется "-": можете сами попробовать конвертер JSON в YAML).
А какую бы вы запись предпочли?

Вы привели невалидный JSON. Вообще, я уже упоминал в статье — можно попробовать cконвертировать JSON в новый формат прямо в браузере на веб-странице проекта.

Можете привести пример на JSON? Я не очень понимаю, что вы имеете в виду.
thindf поддерживает практически всё, что поддерживает JSON.
А чем жсон-то не угодил?
При правке различных конфигов периодически забываю ставить запятые. А также не нравится обязательное заключение параметров и их значения в кавычки.

В этот формат комментарии тоже не завезли?
Хотя явной поддержки комментариев в данной реализации нет, но особенность этого формата такова, что строка:
//font_face = Fira Code
не является ошибкой, а является по смыслу аналогичной вот такой строки в JSON:
"//font_face": "Fira Code"

При таком подходе "комментарии" сохраняются автоматически, а не удаляются как происходит к примеру в JSON-парсерах с поддержкой комментариев.

И все же?
Не понял ваш вопрос. Русская версия поддерживается и всё, в чём она заключается, это поддержка русской буквы В в и , а также русская Н в значении null/None.

Information

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