Основное применение пакетов - это чтение символов. При чтении имеют значение текущая библиотека и текущий модуль - они определяют набор видимых имён символов пакетов и их соответствие пакетам и символам в памяти.
То есть имя_пакета.имя_символа будет иметь разное значение в разных модулях?
Про это написано в документе про модули, пункт «Дополнительные атрибуты нормального модуля». Там сказано, что определение пакета входит в определение модуля, но
Имя, зависимые модули, локальные клички пакетов берутся из определения модуля, остальное надо задать явно"
Но также может быть «непривязанные» пакеты (кстати, их надо вместе или отдельно писать?), которые не связаны с модулем. Например, пакеты лиспа, которые родились до нас. Об этом сказано уже в «пространствах имён».
Почему было такое сильное желание сделать отделение библиотеки от модуля через слеш?
Это что-то интуитивное, чётко не могу обосновать. Интуиции доверяю. Попробую довести идею не отделения до абсурда. Если написано
a.b.c.d.e.f, то как узнать, где границы между библиотекой, модулем, и классом? Особенно, когда начинаем подслащивать и позволять опускать ту или иную часть полного «пути»? И когда получится, что в данном контексте можно указать часть полного пути библиотеки и/или часть полного пути модуля и/или часть полного пути к объекту в модуле?
Хорошо, отделим модуль от класса двоеточием. Вроде сильно разные понятия, их имеет смысл отделить. А как отделить модуль от библиотеки? В Яве для этого соглашения о регистрах.
На это можно спросить, а зачем вообще библиотеки? Почему не иерархические модули?
Мой ответ: потому что нужно организовывать файлы на диске. Вот под это библиотеки и будут использоваться.
Здесь происходит совмещение близких, но различных понятий.
Моё мнение: удачный язык - это тот где близкие, но различные понятия совмещены удачно. Например, модуль и пр-во имён - это разные, но близкие понятия. В Паскале они не совсем удачно совмещены (конфликты имён легко могут приводить к проблемам). Но достаточно удачны (в целом редактировать легко).
Если же все различные понятия в языке различаются, то он становится слишком тяжеловесным. В лиспе пр-ва имён и модули ортогональны - это не очень удобно.
Удачно совмещены понятия или нет - показывает только опыт эксплуатации. Я надеюсь, что моя идея нагрузить библиотеки дополнительной функцией поиска файлов на диске удачна, но это может быть ошибкой.
Деление используется весьма редко, оно не достойно своего значка. Его не жалко израсходовать. Особенно учитывая бедность Русской раскладки значками.
Если бы мы отделяли двоеточием библиотеку от модуля, возникает неоднозначность. Что есть а:б? модуль:имя или библиотека:модуль?
Слово кодица придумал не я, но для меня оно созвучно «глаголице». Впоследствии выяснилось, что это ещё и Украинская фамилия. В любом случае, это лишь тэг. Названия у языка пока что нет.
Вместо экономии на символа и изменении поведения, можешь использовать универсальную раскладку и распространять с ней. http://dreamject.org/dreamjects/unilayouts/ символы вводятся едва ли больше чем английские, а для маркеров можешь хоть эмидзи использовать)
Спасибо. На это пока не готов. Есть ряд причин: клавиши в IDE уже и так загружены, не на всех клавиатурах может оказаться/работать нужная переключалка (видел AltGr), нужно смотреть на доступные шрифты, проверять на всех платформах.
Хотя я думаю, что будущее именно за такими раскладками.
Кирилличнюеские раскладки в обычном виде - это невыносимое говно, когда с русским хоть как-то и с чем-то айтишным взаимодействовать. Если без них обходиться, будут грабли и неполноценность на пустом месте.
Клавиша-модификатор не обязательно одна, в винде алтгр+≈ктрл+алт+, остальное либо имеет что надо, литр настраивается
При импорте модуля интерпретатор ищет файл с именем my_module.py сначала в текущем каталоге, затем в каталогах, указанных в переменной окружения PYTHONPATH, затем ..., а также...
Так сделано во многих языках, но это медленно и неудобно искать, ни человеку, ни среде. У меня эта информация кешируется, причём описано, каким именно образом.
Далее. Если Вася и Петя оба написали модуль или библиотеку с именем foo и нам они обе понадобились, как будем поступать? Обзовём их дураками. А дальше что?
Проблема не в выборе значков для раскладок, а просто в том, что на клавиатуре мало кнопок. Без дополнительных клавиш-модификаторов нельзя добавить значков. Я не уверен, что alt-gr везде есть (например, на всех или хотя бы на большинестве нетбуков) и что Tcl/Tk на Win/Linux сможет его отличить от просто Alt. Убеди меня - тогда будет предмет для разговора.
На самом-то деле, нет особых проблем с синтаксисом. Да, значков маловато, но это некритично.
контрол-альт зачастую тоже занят. Например, горячие клавиши запуска приложений на них может быть. В вирт. машине это может быть выход из вирт.машины в основную. Не всегда подобные сочетания можно отключить.
Хз, проблем не возникало, в виртуалках вроде используется конкретный альт. В любом случае, модификатор не является каким-то непонятным костылём. Его используют французы, немцы, итальянцы, да кто угодно. Примеры здесь http://kbd-intl.narod.ru/layouts можешь глянуть). Не думаю, что ®усский пользователь будет одновременно иметь больше требований, чем все народы вместе взятые (кстати, все спец. символы есть почти в любой не-кириллической раскладке).
То есть большинство нормальных программ предусматривают это и избегают именно ктрл+алт+буква сочетаний. Но в линуксах и маках лучше, конфликтов ваще нет).
Я правильно понял, что в раскладке есть режим, к-рый переключается по Alt-Gr?
Я бы сделал по-другому. В программировании обычно нужно вписать одну инородную букву, не меняя раскладки.
Я бы задействовал под это букву ы, т.е. ы2 - это @, а ыы - это ы.
Надо подумать... Прямо уж засомневался. С одной стороны, изменение раскладки - это прорыв в производительности именно печатания. С другой - это дополнительный риск, дополнительные нарекания и дополнительный труд. А печатание составляет в программировании небольшую долю работы.
То есть большинство нормальных программ предусматривают это и избегают именно ктрл+алт+буква сочетаний.
Ну ты мне устроил разрыв шаблона. У меня в программе есть ктрл-альт-сочетания. Надо подумать, пошарить. Есть ctrl-alt-break, ctrl-alt-backspace. ЕМНИП, в vmware player ctlr-alt- выход из полноэкранного режима.
Я бы предложил не удивлять людей, лично я б не называл запись деления словами приятным сюрпризом. Есть распространённая практика, то что ты редко используешь деление не повод его обделять.
Будет ли у тебя использование класса без модуля или либы без класса?
Неплохо, только не хватает версии модуля (или библиотеки). Под разделитель можно задействовать обратный слэш. Или восклицательный знак
А вот интересно, делал ли кто-нибудь в современное время ЯП без явного указания внешних зависимостей? Выглядело бы более естественно для человека. И в реализации должно быть не очень сложно. Ну, теоретически
Подсказки и указания (разрешение неоднозначностей, точные версии, откуда брать и т.п.) можно было бы держать отдельно, например
А вот интересно, делал ли кто-нибудь в современное время ЯП без явного указания внешних зависимостей?
Зависимости, как минимум, показывают структуру системы, они нужны.
Неплохо, только не хватает версии модуля (или библиотеки).
В норме в одной программе используется одна версия. Версия указывается в директориях адресной книги. Если не одна, есть переименование.
Под разделитель можно задействовать обратный слэш. Или восклицательный знак
Обратный слеш - не стильно. Восклицательный знак ничего, но есть ли прецеденты? Всё же прямой слеш как разделитель - это довольно естественно (в юниксе пути разделяются).
Она и у меня решена. Да и в Питоне небось её можно решить, меняя загрузочные пути во время выполнения.
Про ноду прочитал через 5 строк. Вроде всё нормально, но и новых идей не нашёл. Алгоритм поиска у меня лучше, я думаю.
Но всё же я хочу получить отзывы на то, что я написал. Чукча не читатель, чукча писатель. Поэтому попробую так переформулировать: что у меня сделано хуже, чем в node.js?
Конфликты возможны в вин-приложениях, да. Но решаются они более-менее с разных сторон. Например, отдается приоритет быстрым клавиш. Те быстрые клавиши, которые мне прислал, не совпадают с цифрово-специальным рядом. То есть ктрл+альт+> вряд ли есть. А если где-то не введешь символ ®, то скорее всего в той софтине он не нужен.
Много тонкостей, деталей и ненужная сложность, которая решает призрачные проблемы. Документация больше похожа на мемуары, чем на формальное описание системы — может у тебя стиль такой, но скорей всего она отражает слабое проектирование и поверхностный взгляд на задачу.