Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Среда локальных модулей

87
13 августа 2010 года
Kogrom
2.7K / / 02.02.2008
У меня очередная абстрактная заморочка в вакууме. Возможно, связанная с дремучестью.

Меня всегда немного раздражала система добавления модулей (заголовочных файлов и т.п. для однообразия всех буду звать модулями), принятая во многих языках. То есть, модули разделены на стандартные и локальные. В C и C++ синтаксис их включения немного различается:

#include "local.h"
#include <standart.h>

То есть надо запоминать эти особенности.

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

Тут есть ещё несколько недостатков:

1. Если у меня возникает вопрос, то я должен искать, где реально располагаются стандартные эти модули.
2. Если я переношу свой проект на другую систему, то там может не оказаться определённого стандартного модуля. Это усугубляется тем, что, например, в Питоне принято "расширять" стандартную библиотеку всякими левыми пакетами (например, NumPy, wxPython и т.п.).

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

Кто что думает по этому поводу?
14
13 августа 2010 года
Phodopus
3.3K / / 19.06.2008
Чет я не понял, если в питоне различий локальные/стандартные нет, как он определит - какой ты модуль хочешь подключить? (Ну не знаю я эту змею, ага). В Ц/Ц++ помнится (может плохо помнится) кавычки ищут сначала локальные, затем и глобальные.. каталоги.. (вообще у MSVC были с этим непонятки). Ну и опять же - политика именования модулей. А то еще и имена всех стандартных модулей придется держать в голове, чтобы не дай бог, не назвать так же. Идею с репозиторием не осознал - кто зависимости то там прописывать будет?
87
13 августа 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Phodopus
Чет я не понял, если в питоне различий локальные/стандартные нет, как он определит - какой ты модуль хочешь подключить?


Вначале ищет в локальном проекте, потом, если не нашёл, то уже в стандартной библиотеке. Это если без тонкостей. В новых версиях немного систему поменяли. Но большинство программистов пользуются версиями со старой системой (ибо большинство сторонних библиотек заточены для 2.x версий).

Цитата: Phodopus
Идею с репозиторием не осознал - кто зависимости то там прописывать будет?


Кто создаёт пакет, тот и прописывает. Как-то же в системе пакетов Debian-а сделали. Вроде бы работает.

Конечно, тут будет некоторая морока с подключением пакетов. Но можно выдумать систему не особо сложнее чем apt-get install... С другой стороны, есть же в C заморочка с подключением библиотек (.lib, .a, .so...) и ничего.

87
13 августа 2010 года
Kogrom
2.7K / / 02.02.2008
При том, что в системе с репозиторием можно будет обновлять пакеты локального проекта не поганя основную среду разработки, не внося в неё левых имён, не захламляя кучей файлов и т.п.
5
13 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Кто что думает по этому поводу?


.NET? ;)

87
13 августа 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase
.NET? ;)


Вроде нашел (после упоминания в IRC) что-то похожее:
http://en.wikipedia.org/wiki/Global_Assembly_Cache
но пока не совсем вник.

В принципе, я понял, что в идеальном случае локальная система должна содержать не только все необходимые пакеты, но и сам компилятор (интерпретатор). И Python почти позволяет такое провернуть.

И вроде бы в какой-то версии SmallTalk-а превращение экземпляра среды в конкретный проект было на уровне философии. Хотя, может заблуждаюсь.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог