LINUX.ORG.RU

О боже - выйди ВОкно. Спаси мир от свой убогости.

anonymous
()

Основное применение пакетов - это чтение символов. При чтении имеют значение текущая библиотека и текущий модуль - они определяют набор видимых имён символов пакетов и их соответствие пакетам и символам в памяти.

То есть имя_пакета.имя_символа будет иметь разное значение в разных модулях?

monk ★★★★★
()
Ответ на: комментарий от monk

То есть имя_пакета.имя_символа будет иметь разное значение в разных модулях?

Да, и теперь оно пишется так:

имя_библиотеки/имя_модуля_внутри_библиотеки:имя_символа
den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Соответственно, имя_библиотеки может быть разным в зависимости от текущей библиотеки, а имя модуля - разным в зависимости от текущего модуля.

den73 ★★★★★
() автор топика

Список наследуемых пакетов плох, если в нём находится хотя бы оно плохое имя пакета

«После того как лиса оказывается съеденной, она делает четыре хода назад» (с)

Неофициальное, но формальное резюме: графомания средней тяжести.

Практическая польза: 0

Вторичность: 100%

anonymous
()
Ответ на: комментарий от den73

То есть имя_пакета == имя_библиотеки/имя_модуля_внутри_библиотеки?

Тогда «список наследуемых пакетов» и прочие свойства пакета описываются в модуле?

monk ★★★★★
()
Ответ на: комментарий от monk

Про это написано в документе про модули, пункт «Дополнительные атрибуты нормального модуля». Там сказано, что определение пакета входит в определение модуля, но

Имя, зависимые модули, локальные клички пакетов берутся из определения модуля, остальное надо задать явно"

Но также может быть «непривязанные» пакеты (кстати, их надо вместе или отдельно писать?), которые не связаны с модулем. Например, пакеты лиспа, которые родились до нас. Об этом сказано уже в «пространствах имён».

den73 ★★★★★
() автор топика
Ответ на: комментарий от monk

Остальное - это, прежде всего, какие пакеты мы наследуем, а на какие просто ссылаемся.

den73 ★★★★★
() автор топика
Ответ на: комментарий от monk

А вообще можно попробовать сделать библиотеки более похожими на пакеты, сделать аналогичную систему наследования.

Разница вроде невелика: пакет даёт символы, а библиотека даёт модули. Можно попробовать различать:

  • «зависимость» от библиотеки (даёт право ссылаться на её модули)
  • локальные клички для библиотеки
  • импорт библиотеки, который позволяет обращаться к модулям без префикса библиотеки, если нет конфликта

Хотя в общем-то без этого можно обойтись, потому что можно задать кличку отдельным модулям, как-то так:

объявл_модуль мой_код
 клички
  ё = ру.ужасное_имя_организации.либа/вложенный.черт.те.где.модуль;
 конец_клички
конец_объявл_модуль

После этого вместо

ру.ужасное_имя_организации.либа/вложенный.черт.те.где.модуль.Класс

можно будет написать просто

ё:Класс

Правда это нужно будет повторять в каждом модуле.

Смысл делать одинаково для пакетов и библиотек состоит лишь в том, чтобы система была более логично организованной.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 6)
Ответ на: комментарий от den73

И главное, в итоге всё равно неправильно. Обращение к символу должно читаться так:

ру.ужасное_имя_организации.либа/вложенный.черт.те.где.модуль:Класс
Двоеточие, а не точка в конце.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

«КНопка ручки люка башни танка на плацу»(c)

Мне кажется в вижуал бэйсике я видел подобное;-)

AIv ★★★★★
()

Почему было такое сильное желание сделать отделение библиотеки от модуля через слеш? Даже операция деления была принесена в жертву.

кодица

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

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Почему было такое сильное желание сделать отделение библиотеки от модуля через слеш?

Это что-то интуитивное, чётко не могу обосновать. Интуиции доверяю. Попробую довести идею не отделения до абсурда. Если написано a.b.c.d.e.f, то как узнать, где границы между библиотекой, модулем, и классом? Особенно, когда начинаем подслащивать и позволять опускать ту или иную часть полного «пути»? И когда получится, что в данном контексте можно указать часть полного пути библиотеки и/или часть полного пути модуля и/или часть полного пути к объекту в модуле?

Хорошо, отделим модуль от класса двоеточием. Вроде сильно разные понятия, их имеет смысл отделить. А как отделить модуль от библиотеки? В Яве для этого соглашения о регистрах.

На это можно спросить, а зачем вообще библиотеки? Почему не иерархические модули?

Мой ответ: потому что нужно организовывать файлы на диске. Вот под это библиотеки и будут использоваться.

Здесь происходит совмещение близких, но различных понятий.

Моё мнение: удачный язык - это тот где близкие, но различные понятия совмещены удачно. Например, модуль и пр-во имён - это разные, но близкие понятия. В Паскале они не совсем удачно совмещены (конфликты имён легко могут приводить к проблемам). Но достаточно удачны (в целом редактировать легко).

Если же все различные понятия в языке различаются, то он становится слишком тяжеловесным. В лиспе пр-ва имён и модули ортогональны - это не очень удобно.

Удачно совмещены понятия или нет - показывает только опыт эксплуатации. Я надеюсь, что моя идея нагрузить библиотеки дополнительной функцией поиска файлов на диске удачна, но это может быть ошибкой.

Деление используется весьма редко, оно не достойно своего значка. Его не жалко израсходовать. Особенно учитывая бедность Русской раскладки значками.

Если бы мы отделяли двоеточием библиотеку от модуля, возникает неоднозначность. Что есть а:б? модуль:имя или библиотека:модуль?

Слово кодица придумал не я, но для меня оно созвучно «глаголице». Впоследствии выяснилось, что это ещё и Украинская фамилия. В любом случае, это лишь тэг. Названия у языка пока что нет.

den73 ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Ты неправильно меня понял, логическое ударение я ставил на слово слеш.

Для меня сам вопрос о нужности разделителя пока не закрыт. Но если разделитель, то почему бы и не слеш? Деления мне не жалко. А ты что бы предложил?

den73 ★★★★★
() автор топика
Ответ на: комментарий от dave

Давно хочу спросить, а Common Lisp больше не интересует тебя?

Ceylon 1.0.0 (комментарий)

я нахожусь на этапе «Ты потратишь несколько лет на разработку стандарта».

den73 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

СРОЧНО пишите в 1C!

Обоснуй. Зачем?

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Если написано a.b.c.d.e.f, то как узнать, где границы между библиотекой, модулем, и классом?

А зачем? Проще формализовать простые правила резолва, чем кошмарить синтаксис. Ты даже PHP переплюнул, поздравляю.

A1
()

Латинский будто-бы отсутствует практически начисто. Это выглядит как пренебрежение какое-то ...

Это до какой степени нужно не уважать родной язык, чтобы на нем писать программные операторы!

Даже в школьной математике такого нет...

Директива import foo.bar as baz решает все проблемы ...

Хотите истории успеха - забудьте про паскаль...

anonymous
()

Вместо экономии на символа и изменении поведения, можешь использовать универсальную раскладку и распространять с ней. http://dreamject.org/dreamjects/unilayouts/ символы вводятся едва ли больше чем английские, а для маркеров можешь хоть эмидзи использовать)

Dreamject
()
Ответ на: комментарий от Dreamject

Лорчую, это. Вмесете с @Dreamject вышло бы идеально. Жаль напильник умер.

anonymous
()
Ответ на: комментарий от Dreamject

можешь использовать универсальную раскладку

Спасибо. На это пока не готов. Есть ряд причин: клавиши в IDE уже и так загружены, не на всех клавиатурах может оказаться/работать нужная переключалка (видел AltGr), нужно смотреть на доступные шрифты, проверять на всех платформах.

Хотя я думаю, что будущее именно за такими раскладками.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Кирилличнюеские раскладки в обычном виде - это невыносимое говно, когда с русским хоть как-то и с чем-то айтишным взаимодействовать. Если без них обходиться, будут грабли и неполноценность на пустом месте.

Клавиша-модификатор не обязательно одна, в винде алтгр+≈ктрл+алт+, остальное либо имеет что надо, литр настраивается

Dreamject
()
Последнее исправление: Dreamject (всего исправлений: 1)
Ответ на: комментарий от anonymous

Предлагаю тебе зарегистрироваться.

При импорте модуля интерпретатор ищет файл с именем my_module.py сначала в текущем каталоге, затем в каталогах, указанных в переменной окружения PYTHONPATH, затем ..., а также...

Так сделано во многих языках, но это медленно и неудобно искать, ни человеку, ни среде. У меня эта информация кешируется, причём описано, каким именно образом.

Далее. Если Вася и Петя оба написали модуль или библиотеку с именем foo и нам они обе понадобились, как будем поступать? Обзовём их дураками. А дальше что?

den73 ★★★★★
() автор топика
Ответ на: комментарий от Dreamject

Проблема не в выборе значков для раскладок, а просто в том, что на клавиатуре мало кнопок. Без дополнительных клавиш-модификаторов нельзя добавить значков. Я не уверен, что alt-gr везде есть (например, на всех или хотя бы на большинестве нетбуков) и что Tcl/Tk на Win/Linux сможет его отличить от просто Alt. Убеди меня - тогда будет предмет для разговора.

На самом-то деле, нет особых проблем с синтаксисом. Да, значков маловато, но это некритично.

den73 ★★★★★
() автор топика
Ответ на: комментарий от Dreamject

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

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Хз, проблем не возникало, в виртуалках вроде используется конкретный альт. В любом случае, модификатор не является каким-то непонятным костылём. Его используют французы, немцы, итальянцы, да кто угодно. Примеры здесь http://kbd-intl.narod.ru/layouts можешь глянуть). Не думаю, что ®усский пользователь будет одновременно иметь больше требований, чем все народы вместе взятые (кстати, все спец. символы есть почти в любой не-кириллической раскладке).

То есть большинство нормальных программ предусматривают это и избегают именно ктрл+алт+буква сочетаний. Но в линуксах и маках лучше, конфликтов ваще нет).

Dreamject
()
Последнее исправление: Dreamject (всего исправлений: 1)
Ответ на: комментарий от den73

Я правильно понял, что в раскладке есть режим, к-рый переключается по Alt-Gr?

Я бы сделал по-другому. В программировании обычно нужно вписать одну инородную букву, не меняя раскладки.

Я бы задействовал под это букву ы, т.е. ы2 - это @, а ыы - это ы.

Надо подумать... Прямо уж засомневался. С одной стороны, изменение раскладки - это прорыв в производительности именно печатания. С другой - это дополнительный риск, дополнительные нарекания и дополнительный труд. А печатание составляет в программировании небольшую долю работы.

den73 ★★★★★
() автор топика
Ответ на: комментарий от Dreamject

То есть большинство нормальных программ предусматривают это и избегают именно ктрл+алт+буква сочетаний.

Ну ты мне устроил разрыв шаблона. У меня в программе есть ктрл-альт-сочетания. Надо подумать, пошарить. Есть ctrl-alt-break, ctrl-alt-backspace. ЕМНИП, в vmware player ctlr-alt- выход из полноэкранного режима.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

В Windows можно исползовать Control-Alt-буква для вызова ярлыков на рабочем столе.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

А ты что бы предложил?

Я бы предложил не удивлять людей, лично я б не называл запись деления словами приятным сюрпризом. Есть распространённая практика, то что ты редко используешь деление не повод его обделять.

Будет ли у тебя использование класса без модуля или либы без класса?

ya-betmen ★★★★★
()
Ответ на: комментарий от den73

Можно ссылкой.

Например:

https://docs.python.org/3/reference/import.html

https://nodejs.org/api/modules.html

Причем в ноде решена проблема

Если Вася и Петя оба написали модуль или библиотеку с именем foo и нам они обе понадобились, как будем поступать?

A1
()
Ответ на: комментарий от den73

ру.ужасное_имя_организации.либа/вложенный.черт.те.где.модуль:Класс

Неплохо, только не хватает версии модуля (или библиотеки). Под разделитель можно задействовать обратный слэш. Или восклицательный знак

А вот интересно, делал ли кто-нибудь в современное время ЯП без явного указания внешних зависимостей? Выглядело бы более естественно для человека. И в реализации должно быть не очень сложно. Ну, теоретически

Подсказки и указания (разрешение неоднозначностей, точные версии, откуда брать и т.п.) можно было бы держать отдельно, например

Deleted
()
Ответ на: комментарий от ya-betmen

Я бы предложил не удивлять людей, лично я б не называл запись деления словами приятным сюрпризом.

В светлом будущем можно будет использовать ÷

Будет ли у тебя использование класса без модуля

Конечно.

den73 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

А вот интересно, делал ли кто-нибудь в современное время ЯП без явного указания внешних зависимостей?

Зависимости, как минимум, показывают структуру системы, они нужны.

Неплохо, только не хватает версии модуля (или библиотеки).

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

Под разделитель можно задействовать обратный слэш. Или восклицательный знак

Обратный слеш - не стильно. Восклицательный знак ничего, но есть ли прецеденты? Всё же прямой слеш как разделитель - это довольно естественно (в юниксе пути разделяются).

den73 ★★★★★
() автор топика
Ответ на: комментарий от A1

Причем в ноде решена проблема

Она и у меня решена. Да и в Питоне небось её можно решить, меняя загрузочные пути во время выполнения.

Про ноду прочитал через 5 строк. Вроде всё нормально, но и новых идей не нашёл. Алгоритм поиска у меня лучше, я думаю.

Но всё же я хочу получить отзывы на то, что я написал. Чукча не читатель, чукча писатель. Поэтому попробую так переформулировать: что у меня сделано хуже, чем в node.js?

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Конфликты возможны в вин-приложениях, да. Но решаются они более-менее с разных сторон. Например, отдается приоритет быстрым клавиш. Те быстрые клавиши, которые мне прислал, не совпадают с цифрово-специальным рядом. То есть ктрл+альт+> вряд ли есть. А если где-то не введешь символ ®, то скорее всего в той софтине он не нужен.

https://en.m.wikipedia.org/wiki/AltGr_key

Dreamject
()
Ответ на: комментарий от den73

Восклицательный знак ничего, но есть ли прецеденты?

В UUCP:
foovax!barbox!user

monk ★★★★★
()
Ответ на: комментарий от den73

что у меня сделано хуже, чем в node.js

Много тонкостей, деталей и ненужная сложность, которая решает призрачные проблемы. Документация больше похожа на мемуары, чем на формальное описание системы — может у тебя стиль такой, но скорей всего она отражает слабое проектирование и поверхностный взгляд на задачу.

A1
()
Ответ на: комментарий от A1

Много тонкостей

Ничего конкретного ты мне не предъявил.

den73 ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Бекслеш в нормальных системах (не в офтопике) больше ассоциируется с отменой спец. значения буквы, чем с чем-то иным.

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.