LINUX.ORG.RU
ФорумTalks

Интересная концепция среды для создания и работы приложений

 , ,


0

1

Мне пришла в голову интересная идея. Суть в том, чтобы создать среду для работы программ, где приложения могут использовать и изменять компоненты друг друга. Есть единый общесистемный список функций, классов и т.п. Приложения будут писаться на интегрированном в проект языке программирования, приспособленном к данной среде.
Будут продвинутые механизмы парсинга, регулярных выражений и т.п.
Прошу оценить. Здесь более подробное описание концепции. Если где-то уже встречалось подобное, прошу сообщить мне, заранее извиняюсь :) Я не Денис Попов.
P.S. Пока ещё не написано ни строчки кода, есть только идеи. Принимаю советы и вопросы. Интересно мнение людей по поводу концепции. Я понимаю, что, скорее всего, проект не получит никакого распространения, но идея интересная. Я хочу проверить её в действии.

********************************************************************************************************************************************************************

Большое спасибо всем, я учёл все замечания. Вы сообщили мне очень много информации. Спасибо Napilnik за объяснение проблем моей концепции, благодаря чему я пока отказался от написания проекта. Если у меня появятся ещё какие-то аргументы, я их изложу тут. Кстати, про Inferno и Limbo, а также про Plan 9 я знаю, они мне нравятся, отчасти я брал идеи оттуда.



Последнее исправление: SIvan32 (всего исправлений: 2)

Ты предлагаешь увеличить связность функций, переменных и т. д., идея конечно хорошая и продуктивная но применительно к человеческим возможностям, это даже в пределах одной программы напрягает мозги на 100%, ты же предлагаешь распостранить это на всё ПО операционной системы. Система даст сбои из-за человеческого фактора. Разработчики языков для корпоративного применения стремятся свести человеческий фактор к минимуму, а ты предлагаешь всё на него повесить - до того как операционка разовьётся в новый скайнет и захочет убить всех человеков, эти самые человеки должны её напейсать и отладить.

Napilnik ★★★★★
()

Поздравляю, ты придумал emacs

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

Я предлагаю нормально разбивать программы на функции и классы, внести эти эти блоки в список и позволить любым прогам их использовать и изменять. Похожая идея очень хорошо работает в андроиде (только там проги не могут изменять друг друга).
napilnik, объясните конкретнее, где именно начнутся проблемы?

SIvan32
() автор топика

Инкапсуляция, брат, слышал о ней? И вообще это какой-то COM, я так понял. Baze script что делать в твоей концепции должен?

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

Я предлагаю нормально разбивать программы на функции и классы, внести эти эти блоки в список и позволить любым прогам их использовать и изменять.

В результате получится что и текстовой редактор и плеер и утилиты для дефрагментации диска, все плагины и всё-всё остальное превратятся в единую программу. Чтобы внести улучшение в такую сложную программу, придётся мысленно представить очень сложную конструкцию а твои человеческие возможности ограничены, ты просто головой в их потолок пока не постучался и не можешь трезво оценить свои и чужие силы. Разработчики линукса попытались не столь радикально но посадить программы на единые заменяемые зависимости, в результате в операционке нет ни одного нормального видеоредактора, софт держится на рабском труде тысяч ментейнеров прикованных к наборам пакетов а единственный нормальный 3D редактор представляет собой бывшее проприетарное изделие разработанное для ОС ирикс. Гимп ещё в общем-то хорош но он изначально не подстраивался под чужие компонены а для него изготавлявалось всё недостающее, типа тулкита GTK, и всё равно линуксовое происхождение дало о себе знать - чтобы установить новую версию редактора, нужно обновить полсистемы, бред помноженный на бред.

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

Жаба не круто, она просто предоставляет возможность решить некоторые проблемы за счёт повышенного потребления аппаратных ресурсов. Вообще, зависимость от чужого сумасбродства не есть хорошо, правильные разработчики стараются от него дистанцироваться, например построить в пределах собственного ЯП прослойку над системой, дёргать из системы только правильные функции а неправильные заменить своими аналогами а при компиляции всё линковать статически чтобы никакой сторонний гад не скормил проге непроверенную изменённую хрень. Так устроен FPC и работает он замечательно.

Napilnik ★★★★★
()

А примеры use casов где? Чтобы стразу стало понятно почему это хорошо. Например, какие именно объекты каких именно классов должны делиться между приложениями?

Если где-то уже встречалось подобное, прошу сообщить мне, заранее извиняюсь :)

Common Lisp и Smalltalk же. Для более обычных языков можно построить ОО протокол поверх shared memory.

quasimoto ★★★★
()

Лучше делать систему в которой стёрта грань между программой и функцией, как в Inferno/Limbo. И чтобы API библиотек максимально мог совпадать с CLI за счёт автоматических процедур разбора и печати объектов различных примитивных и определённых пользователем типов.

quasimoto ★★★★
()

Поздравляю, вы изобрели Smalltalk! Можете взглянуть, например, на Squeak или Pharo.

Ой, еще я забыл Forth.

buddhist ★★★★★
()
Последнее исправление: buddhist (всего исправлений: 1)

man компонентное программирование

в части как одно ДОЛЖНО было но не взлетело

команды оберона; objectC изначальный Кокса.

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

Baze script что делать в твоей концепции должен?

RedPossum, язык Baze будет основой системы. Он будет использоваться и для написания самих приложений, и для скриптов управления (например, замены блоков) и для конфиг файлов (параметры в конфигах будут просто переменными Baze script). Язык будет создан таким образом, чтобы облегчить формирование списка, заимствование и изменение компонентов. Это будет просто скриптовый язык программирования со встроенными механизмами для работы с блоками кода и списком. Будут операции вроде добавления/замены строк и целых блоков.

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

man Forth же :)

Пожалуй, хотя тут можно вспомнить и про Erlang в котором любая функция spawnится и может общаться с другими процессами посредством сообщений, и там, кстати, как раз избегают всякого рода мутабельного общения между процессами, только чистые сообщения (мутабельно только TLS процесса). Просто было бы здорово если бы системный язык был более безопасным чем си (как OCaml, скажем), а его динамическое надмножество заменяло CLI в виде REPLа, чтобы можно было из него непосредственно звать разные функции библиотек, без написания кучи утилит-обвёрток с кучей опций.

quasimoto ★★★★
()

Unix-way 2.0

Не нужно, старый ещё далеко не изжил себя.

schizoid ★★★
()

А вообще, ЕМНИП, Inferno и Limbo чем-то похожи на то, что ты хочешь.

schizoid ★★★
()

Всем большое спасибо

Спасибо, я учёл все замечания. Вы сообщили мне очень много информации. Спасибо Napilnik за объяснение проблем моей концепции, благодаря чему я пока отказался от написания проекта.
Если у меня появятся ещё какие-то аргументы, я их изложу тут. Кстати, про Inferno и Limbo, а также про Plan 9 я знаю, они мне нравятся, отчасти я брал идеи оттуда.

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

Как я уже понял, похоже, ничем :) Я мало читал по этому вопросу.

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

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

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

у них сейчас есть ещё нечто похожее, но на жабе(поверх Netbeans) - RadixWare. Обещали OpenSource, но болт.

ukr_unix_user ★★★★
()

Ты сейчас придумал то ли Unix, то ли Emacs, то ли LISP-машину, то ли платформу .NET...

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

Тогда бы это был верх совершенства.

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

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

Вообще периодические проверки можно отключить (если поверхность диска не повреждена, то они бесполезны на современных журналируемых ФС).

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

Deleted
()

Уже говорили про версионность?

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

Ну так пусть дистростроители почешутся и сделают плановые проверки через ~20 монтирований отключаемыми. Если время критично то словил предупреждение и отключил а если включил аппарат и пошёл на кухню заниматься хавкой, то пусть проверяет сколько надо. Почему бы в fstab для системных дисков на десктопах не использовать такой тип проверок?

Napilnik ★★★★★
()

Похоже на 1С:Предприятие по-моему. Сделаете лучше - будет отлично

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

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

поэтому модули должны самоорганизовываться :)

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

это уже отлично работает в реализациях WSGi (Equinox, Felix), но автору только поиска провайдера не хватит :)

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

Ну так пусть дистростроители почешутся и сделают плановые проверки через ~20 монтирований отключаемыми.

Ну так они и есть отключаемыми. Читай man tune2fs.

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

поэтому модули должны самоорганизовываться :)

При программировании на низком уровне возникнут баги в некоторых приложениях использующих самомодифицированные модули.

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

Это же махровое ООП, класс который тянет несколько метров скомпилированного кода, а у автора была идея развивать и стандартизировать не только следующие уровни абстракции но и низкий уровень, начиная с процедур.

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

Ну так они и есть отключаемыми. Читай man tune2fs.

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

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

Все там есть, читать просто нужно, а не говорить «не читал, но там такого нет».

tune2fs -c 0 -i 0 /dev/sda1

Deleted
()
Ответ на: комментарий от Deleted
tune2fs -c 100 -i 180 

Что означает 100 месяцев, или 180 запусков системы между проверками e2fsck (при ежедневном запуске компьютера это составит примерно полгода). Нулевое значение совершенно отключает автоматическую проверку. 

И как это выведет на экран надпись «нажмите Escape для пропуска проверки»?

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

Чтобы убрать плановые проверки достаточно прописать 0 в шестое поле fstab. Про Esc было сказано во фразе «как в маздае», после неправильной перезагрузки похожее предложение там выскакивает, и сделано это очень удобно, не заметить его сложно.

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

Ы. А с какого перепугу опенсорсному разработчику надо беспокоиться о каком-то «массовом пользователе»?

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

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

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

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

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

Да к линуксу, как ядру, это вообще не относится :) Да, пакетного менеджера и мейнтейнеров.

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

- Запилите мне возможность самоубийства!

- Нет, самоубийство может привести к вашей гибели. Мы не желаем нашим пользователям смерти.

- Вам начхать на массового пользователя!

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

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

И да, разработчикам опенсорца таки начхать на «массового пользователя» :)

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

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

Да ты гонишь, речь идёт о продвинутом управлении периодическими проверками, от которых на отрубаемых через сеть питания десктопах толк есть, реализованном ещё в win 9x и отсутствующем как класс в современных линуксах.

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