Ну чтобы не бояться не быть полезным - Unix must die
August 12th, 2008
11:07 pm

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
Unix must die

(6 comments | Leave a comment)

Comments
 
[User Picture]
From:[info]imz
Date:July 4th, 2011 - 08:49 pm

what I imagine a good shell of the future to be like.

(Link)
Да никак! Мне было не охота на них смотреть ближе, да и себя к чему-то принуждать.

Слишком ленив для революции :(

На самом деле, я ещё подумал и другие вещи с тех пор касаемо этих вопросов на практике.

Например, скрипты -- это первое -- (для себя) я предпочту попросту писать на другом высокоуровневом языке, а не bash. Выбор большой (глядя вокруг): кто-то сразу думает в таких случаях на python, я -- может, на haskell или lisp. Когда-то awk сгодится. Хотя привычка всё тянет к bash, на котором как что писат уже в голове сидит и требует сознательного обдумывания... :(

Они мне пока ближе, чем rc; зачем мне сейчас в первую очередь на rc смотерть?..

Ну а что же -- это второе -- использовать в качестве интерактивного shell-а?.. Ну я пока то bash (для администрирования), то eshell в Emacs при пользовательской работе использую. Но он недоделанный (отстой на самом деле из-за его убогости полный!), зато внутри Emacs и можно привычным образом манипулировать с текстом, который ввод или вывод действий в shell-е, а также связываться с другими буферами и пр. емаксовыми механизмами.

Опять же, некто мне говорил, что мне могло бы понравиться что-то вроде ipython или последнего shell-а от Microsoft (извините, не запомнил названия) -- при моём стремлении к чистототе и простоте абстракций, структур всяких. Я не пробовал.

Ещё я порыскал, бывают всякие задумки интерактивных shell-ов над haskell. Я хотел попробовать, но потом меня стали посещать мысли, что не совсем идеал в моём представлении, потому что дело не только в технике программирования и парадигме мышления и программирования (строки, структуры/записи/объекты, функции или -- быть может даже -- неизвестные и поиск решений, т.е. "логическое прогр-е"), и вменяемом синтаксисе, но в самой организации дела составления своей команды, опирающейся на плечи ОС.

(Так что зачем тратить время на освоение того, что не продвигает нас в сторону моего идеала... А ещё я параллельно заметил, что предлагаются интерактивные shell-ы c упрощённым и более вменяемым синтаксисом вроде fish -- почему пока нет идеала не попробовать его для простых нужд, чтобы не раздражаться постоянно на уродство bash?.. С одной стороны, оно, конечно, вроде как позиционируется для новичков. Зато не будет бесить своими "$("" '' \\)" "${@}"!)

Так вот.

Я подумал, что я хочу, чтоб интерактивный shell был вроде системы построения желаемой команды путём поиска вывода желаемого.

Ср. coq и т.п. proof assistants.

Желаемое -- ну для начала можно считать, что это -- тип. (А тип -- как учит Хаскелл Карри -- это утверждение, т.е. в той или иной степени грубости -- это семантика задуманного.)

Аксиомы в нашей системе вывода -- это уже возможности (уже реализованные программы), предоставляемые ОС.

Правила вывода -- всяческие способы комбинирования простых команд в более сложные. Ну там по сути всякие: ; | & || && $() () xargs и т.п. По этим правилам строится сложная команда, и про них известно, какое преобразование в семантике они делают: как из семантики частей получается семантика всего целого.

Когда нашли вывод для желаемого, одновременно построили команду, его реализующую. (Curry-Howard correspondence)

И эта система помогает находить пригодные тебе программки в твоей ОС, дистрибутиве -- не нужно помнить их названия, какая что полезного делает и какие аргументы. Это должно быть формализовано (на уровне набора аксиом это ппопадает в систему вывода нашу). -- Большая работа!

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

Ср. hoogle -- там поиск по грубым haskell-овским типам, но и при такой степени грубости семантической стороны в нашей системе уже было бы неплохо. Из миллиона наш "shell assistant" уже предложит по типу десяток-другой программок, которые могли бы сработать (судя по типу) в решении нашей задачи, а мы выберем по нашему человечьему разумению. (И нет, в hoogle, конечно, нет поиска вывода, т.е. построения сложной программы из доступных простых; это я просто в качестве примера того, что при обилии и богатстве библиотечных штуковин hoogle сильно поможет найти нужную тебе хотя бы просто по типу. А для примера построения правильной программы из кусочков -- см. coq и т.п.)

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

И явно работать со схемами построения -- это совсем не человеческая языковая способность, поэтому оно может не сработать и не прижиться в качестве интерактивного shell-а. Может быть... но попробовать я бы хотел.

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

Правда, мне не хочется осоваивать "лексикон" из миллиона написанных Unix программ. Ну миллион, это я преувеличиваю, но дясятки тысяч. Мой интерактивный шелл -- это, получается, не шелл простого носителя языка, а шелл грамматика, читающего и пишущего на новом для него языке благодаря уму и сообразительности, при помощи инструментов -- логики, программы-системы вывода и формализованного словаря. Т.е. не оттачивающего мастерство беглой речи, а каждый раз решающего всё же той или иной хитрости задачу, когда даёт шелл-команду.)
[User Picture]
From:[info]imz
Date:July 4th, 2011 - 09:22 pm

typos

(Link)
typos fixed:

Хотя привычка всё тянет к bash, на котором как что писать уже в голове сидит и не требует сознательного обдумывания... :(
My Website Powered by LJ.Rossia.org