LINUX.ORG.RU

[велосипед] Файловый менеджер: «С» или Ruby?

 


0

0

Доброго времени суток всем.

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

Писать я могу на двух языках: C и Ruby, и мне сложно решить какой из них использовать. Программа будет консольной, поэтому для интерфейса будет использована библиотека ncurses. В применении одного из вышеназванных языков, я вижу следующие достоинства и недостатки:

Ruby:

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

«C»:

  • Тепло и уютно
  • Пишется уже не так быстро, как на Ruby, но, возможно, большая степень контроля чего-то стоит в данном конкретном случае
  • Работает еще как быстро, но зачем мне это?
  • Расширять немного сложнее, чем с Ruby
  • Хочу поупражняться в этом языке

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

Прошу не предлагать изучить некий язык Х, который для поставленной задачи лучше С и Ruby вместе взятых, потому как предвижу флейм «какой язык круче для всего-всего».


Python. Тем более, что на ЛОРе тут у тебя пара единомышлеников будет :)

...

Кстати, дурацкий вопрос - а какой консольный движок в NDN юзается? Оно, хоть и глючное, но работает в консоли намного быстрее, чем mc...

KRoN73 ★★★★★
()

> Программа будет консольной, поэтому для интерфейса будет использована библиотека ncurses.

Еще один товарищ, который пытается "сделать правильно".

Каждый проект, который пытаются сделать на ncurses, сразу превращается в неюзабельное гавно, будь то MC, aptitude или еще что. Такое впечатление, что эта библиотека перехерачиват в людях представления о нормальном текстмодовом интерфейсе, и они начинают создавать какие-то фееричные поделия.

xintrea
()

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

Даже неуч-анестезиолог смог за несколько лет вкурить исходники и создать пару патчей.

А уж говнофайловых говноменеджеров и так на любой цвет.

gkrellm
()

C для маленьких утилит. Пиши тогда уж на Ruby. И лучше сначала подумай, что это такое будет и зачем, а потом пиши.

alex4
()

Моё мнение: начинание хорошее, только не хватает описания идеи. Каким вы видите идеальный файловый менеджер?

Руби не советую. Зависимость от руби для консольного fm - это очень неприятно. Обязательно посмотрите http://www.s-lang.org/

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

> Еще один товарищ, который пытается "сделать правильно".

Вполне естественное желание.

> Каждый проект, который пытаются сделать на ncurses, сразу превращается в неюзабельное гавно, будь то MC, aptitude или еще что.

Ушибленный гуём или консолью? Одно из двух.

Hjorn
()

про тепло и уютно это вы пошутили верно, после пистона и разных пёрлов Си сразу шибает сегфолтами ;]

hizel ★★★★★
()

На чём что-то писать вообще-то дело __исключительно__личное__. Это всё равно что спросить следующее:

Доброго времени суток всем.

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

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

Блондинка:

⚫ бла-бла-бла

⚫ бла-бла-бла

⚫ бла-бла-бла

Брюнетка:

⚫ бла-бла-бла

⚫ бла-бла-бла

⚫ бла-бла-бла

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

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

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

> Каждый проект, который пытаются сделать на ncurses, сразу превращается в неюзабельное гавно, будь то MC, aptitude или еще что. Такое впечатление, что эта библиотека перехерачиват в людях представления о нормальном текстмодовом интерфейсе, и они начинают создавать какие-то фееричные поделия.

и ты наверно можешь привести что-то близкое к mc ?

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

>и ты наверно можешь привести что-то близкое к mc ?

Если в плане интерфейса, а не функционала, то NDN делает mc по всем статьям :) Жалко, что пока неюзабелен совсем.

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

> Если в плане интерфейса, а не функционала, то NDN делает mc по всем статьям :) Жалко, что пока неюзабелен совсем.

и зачем его тогда упоминать ?

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

>и зачем его тогда упоминать ?

Затем, что речь шла о качестве продуктов на ncurses.

KRoN73 ★★★★★
()

напиши на руби прототип, за вечер-два. хватит чтобы понять что этот тоже не то что ты искал, установить emacs и использовать dired, расширяя его в случае чего на elisp.

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

volh ★★
()

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

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

Большой проект не нужен вообще. Монстров и так хватает. Мне лично хочется чего то аля clex, доведенного до ума.

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

> Если в плане интерфейса, а не функционала, то NDN делает mc по всем статьям :) Жалко, что пока неюзабелен совсем.

Походу Некромансер написан на паскале, полагаю и оконная либа у него своя.
Вообще DN был написан на борланд паскале с использованием Turbo Vision. Но в то время RitLab'овцы ее сильно перелопатили и получили весьма юзабельный файловый менеджер. А когда они его сделали фриварным, то вообще стало чудесно.
Правла в это время Евгений Рошал уже выпустил первую версию FAR...

p.s. Argus (тоже от RitLab) - фидошная "мыльница" была весьма приятной штукой. Хотя T-Mail был весьма хорош.

andreyu ★★★★★
()


заведомо не C
скорее, C++
впрочем, выбор руби - вопрос конечно интересный. может быть, что-то в этом и есть.

// wbr

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

> p.s. Argus (тоже от RitLab) - фидошная "мыльница" была весьма приятной штукой. Хотя T-Mail был весьма хорош.

тмыл рвал его как Тузик грелку.

// wbr

klalafuda ★☆☆
()

Хм. Сам задаюсь аналогичной задачей, ибо мс уже в печенках и вообще после ДОС Навигатора я не могу воспринимать нортон-стайл интерфейс нормально (к виндозному фару это тоже относится несмотря на все его плюшки). Ну а так как порт навигатора на линукс совершенно неюзабелен, пилю потихоньку клон на питоне.

Хотя, пилю это пока громко сказано. Как там выше было сказанно, навигатор рулил за счет возможностей Turbo Vision, а адекватных консольных аналогов под линуксом я не нашел (есть биндинги к борландовскому tv, но это не то) и следовательно прежде чем начать писать сам файловый менеджер стоит задача написать клон турбо вижна. На этой задаче и застрял, похоже, надолго. Поскольку задачка та еще.

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

> Хотя, пилю это пока громко сказано. Как там выше было сказанно, навигатор рулил за счет возможностей Turbo Vision, а адекватных консольных аналогов под линуксом я не нашел (есть биндинги к борландовскому tv, но это не то) и следовательно прежде чем начать писать сам файловый менеджер стоит задача написать клон турбо вижна. На этой задаче и застрял, похоже, надолго. Поскольку задачка та еще.

ну есть порт TV под *NIX. в принципе, вполне юзабельный. там конечно нужно подпилить по мелочам, но последний раз, когда я его смотрел (года 3 назад) он вполне собирался и даже работал. естественно без биндингов к питону, но, думаю, это далеко не такой чтобы сложный вопрос. на бакенде были AFAIR SLang и, опционально, ncurses.

// wbr

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

> ну есть порт TV под *NIX. в принципе, вполне юзабельный. там конечно нужно подпилить по мелочам, но последний раз, когда я его смотрел (года 3 назад) он вполне собирался и даже работал. естественно без биндингов к питону, но, думаю, это далеко не такой чтобы сложный вопрос. на бакенде были AFAIR SLang и, опционально, ncurses.

впрочем, IMHO, было бы правильнее просто написать свой нативный a'la TV. благо, там делов не так чтобы много. главное, аккуратно разобраться с артефактами бакенда, чтобы не получилась очередная кособокая обвязка как у mc. но тут уж селяви, это не проблемы ни tv ни языка, это проблемы криворуких курсов :-/

// wbr

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

>и следовательно прежде чем начать писать сам файловый менеджер стоит задача написать клон турбо вижна.

Поддерживаю. Однако не будет ли сей лисапед лишним? Что-то никто не вспоминает это: http://wiki.freepascal.org/Free_Vision

За сим предлагаю забить на C и Руби и писать на старом добром паскале.

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

> За сим предлагаю забить на C и Руби и писать на старом добром паскале.

"Спасибо, лучше вы к нам" (c) фильма

// wbr

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

>впрочем, IMHO, было бы правильнее просто написать свой нативный a'la TV. благо, там делов не так чтобы много. главное, аккуратно разобраться с артефактами бакенда, чтобы не получилась очередная кособокая обвязка как у mc. но тут уж селяви, это не проблемы ни tv ни языка, это проблемы криворуких курсов :-/

Имненно об этом и идет речь. Именно по этому я и искал альтернативу ncurses, в сторону которого даже смотреть не желаю. В S-Lang не въехал, для вывода пока-что думаю использовать termbox, для ввода - libgii (хотя у меня есть сомнения, не слишком ли монстроузна эта связка при всех ее преимуществах).

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

>За сим предлагаю забить на C и Руби и писать на старом добром паскале.

Зачем нам второй NDN? Хочешь писать на паскале - лучше в их проект код закоммить (хотя стой, у них там опенсорс?).

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

> > p.s. Argus (тоже от RitLab) - фидошная "мыльница" была весьма приятной штукой. Хотя T-Mail был весьма хорош.
> тмыл рвал его как Тузик грелку.


Не припомню, когда это они выходили на ринг.

andreyu ★★★★★
()

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

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

>(хотя стой, у них там опенсорс?).

Не-а. NDN закрытый. Иначе бы коммьюнити давно уже поддержку UTF-8 сделало :)

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

> termbox, про который я говорил, как раз таки его творение. Довольно приятное на первый взгляд.

ну это на первый. его ещё пилить пилить и пилить. по крайней мере через putty он выдаёт весьма неадекватный результат. например, Ctrl+1 == CTRL+7, CTRL+/, CTRL+_. Alt+foo вообще не работает, даже голые F1..F4 выдаются как CTRL+2, CTRL+~. вывод только в UTF8. ну и так далее. в общем, курсы, сланг & K - это конечно какашка, но ему до них ещё расти и расти.

// wbr

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

> Не-а. NDN закрытый. Иначе бы коммьюнити давно уже поддержку UTF-8 сделало :)

Как это? Сорцы же DN были открыты, следовательно и Некромансер должен быт открытым. Просто оно на паскале написано, вот никому и не нужно. Тем более, что точили его под ФС от Майкрософт.

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

>Сорцы же DN были открыты, следовательно и Некромансер должен быт открытым.

http://ndn.muxe.com/

Не нашёл там ни слова про сорцы. И Linux-версия у них идёт уже готовым бинарником.

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

> Это, видимо, сорцы оригинала. Под Linux их никто, в отличии от NDN не портировал...

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

// wbr

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

>мне почему то кажется, что дешевле написать новый с нуля

Именно.

И я за Python :)

>другой вопрос, что бакенды в линуксе - полное дерьмо

Угу. Нашёл бы я консольную либу уровня того, что в VirtualPascal в NDN используется - занялся бы двухпанельником сам уже год тому назад. Но все мои потуги заткнулись именно на этом. ncurses - это ужас на крыльях ночи. Не по работе с ним, это бы можно б было обёртку написать, а по некомфортности. Даже в mc оно не особо приятно, но хоть терпимо. В Питоне же - кранты. Отрисовка тормозная...

>не особо навороченный двухпанельник - это отнюдь не бог весть какой сложности проект.

Простая запускалка файлов - это несколько десятков файлов. Остальное - продуманный API и механизм плагинов :) Можно делать долго, неторопливо, всем сообществом и под свои задачи.

...

Так что, похоже, нужно с низкоуровневого консольного тулкита начинать писать. Но вот этим мне заниматься уже категорически лень :)

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

> Так что, похоже, нужно с низкоуровневого консольного тулкита начинать писать. Но вот этим мне заниматься уже категорически лень :)

ну на этом как водится и порешим :) в конце-концов, mc не такое уж и УГ. по крайней мере человек ко многому может привыкнуть. даже к mc. хотя да, после dn/ndn да что там, обычного nc это криворукое поделие выглядело просто ужасающе. лучше оно не стало за эти годы. вопрос лишь привычки. вон, пишут же что-то некоторые мазохисты в емаксе или, прости господи, виме. 'и ничего, и ничего, и ничего...' (с)..

// wbr

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

>по крайней мере человек ко многому может привыкнуть. даже к mc

Это точно :)

>лучше оно не стало за эти годы

Интерфейсно-тулкитно - нет. А вот по функционалу в последний год начались большие подвижки. Правда, перенос наработок в официальную ветку больше похож на движение три шага вперёд + два шага назад, но процесс пошёл.

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

> Интерфейсно-тулкитно - нет. А вот по функционалу в последний год начались большие подвижки. Правда, перенос наработок в официальную ветку больше похож на движение три шага вперёд + два шага назад, но процесс пошёл.

как я уже не помню сколько лет назад начинал первый запуск mc с настройки клавиатуры под конкретный терминал, так и сегодня. все то же самое. ничего не поменялось. как небыло Alt/Shift-Fx так и нет. как.. ну и так далее. по функционалу же и обычный mc-4.6.1a-35.el5 более чем достаточно. пихать в него с текущими косяками плагины - себе дороже.

// wbr

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

А что уважаемая публика скажет насчет плюсовой обязки для (n)curses: http://ndk-xx.sourceforge.net/ ? Три месяца назад я скомпилил его пример (правда 2 строки пришлось поправить) -- и окошки окошатся, менюшки менюшатся, табы табятся...

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

> А что уважаемая публика скажет насчет плюсовой обязки для (n)curses: http://ndk-xx.sourceforge.net/ ? Три месяца назад я скомпилил его пример (правда 2 строки пришлось поправить) -- и окошки окошатся, менюшки менюшатся, табы табятся...

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

// wbr

klalafuda ★☆☆
()

Моё мнение: начинание хорошее, только не хватает описания идеи. Каким вы видите идеальный файловый менеджер? Руби не советую. Зависимость от руби для консольного fm - это очень неприятно. Обязательно посмотрите http://www.s-lang.org/

То что я не опубликовал описания не означает что его нет :) За s-lang спасибо, посмотрю. Действительно не хочется писать на ncurses т.к. уже приходилось применять, впечатления не очень.

C для маленьких утилит. Пиши тогда уж на Ruby. И лучше сначала подумай, что это такое будет и зачем, а потом пиши.

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

На чём что-то писать вообще-то дело __исключительно__личное__.

В данном случае мне все равно. Просто хотелось бы себя хоть немного предостеречь от неправильного(нецелесообразного с моей точки зрения) выбора.

напиши на руби прототип, за вечер-два. хватит чтобы понять что этот тоже не то что ты искал, установить emacs и использовать dired, расширяя его в случае чего на elisp.

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

Спасибо за совет, так и попробую, за исключением прототипа: уже есть vfu, почти самое оно.

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

Позвольте спросить, каковы возможные варианты велосипедов?

Btw, я хочу писать что-то очень похожее на vfu ( http://cade.datamax.bg/vfu/ ).

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

>vfu
Какая жуть. Напомнило старые борландовские среды...

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

>Java/C#/VB.NET

Мсье предлагает переизобрести muCommander?

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