Создать тему  Создать ответ 
Переосмысление терминала
10-04-2013, 11:51    
Сообщение: #1
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

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

Живее всего терминал чувствует себя на юникс-подобных платформах. Здесь тебе и уникод, и полупрозрачность.
[Изображение: gnome-terminal.png]

Однако там ему больше всего мешает обратная совместимость: терминал — это обязательно эмулятор текстового режима монитора, в котором все клетки занимают один и тот же размер. Кроме того, терминал взял на себя несколько другие функции: интерактивный вывод данных, причём зачастую не совсем текстовых (ncurses, libcaca, etc.). И это неудобно: во-первых, терминалы слишком громоздкие из-за поддержки кодов для перехода на произвольную строку к произвольному символу, во-вторых, это мешает реализовать действительно полезные вещи (Plan 9 доказал, что терминал и красивые шрифты — вещи совместимые, но в Linux нужно, чтобы шрифт был моноширинным...).

В Windows старый DOS’оподобный терминал уже никто не использует (кроме некоторых инопланетян...), поэтому MS смогла начать свой PowerShell практически с чистого листа.
[Изображение: PS-ISE-1.jpg]

Недавно я нарвался ещё на такой проект (пока что не игрался, просто почитал описание, но какой-то код там есть): http://acko.net/blog/on-termkit/
[Изображение: termkit-2.png]

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

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 15:11    
Сообщение: #2
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Переосмысление терминала
Цитата:В Windows старый DOS’оподобный терминал уже никто не использует (кроме некоторых инопланетян...), поэтому MS смогла начать свой PowerShell практически с чистого листа.
Как-то пробовал поработать с пауэршелловским терминалом. Мне не понравилось. Ладно, неканоничное разделение инпута и аутпута  в два окошка — с этим еще можно как-то смириться через много-много лет. Ладно, полная неработоспособность программ с псевдографическим интерфейсом — в наше время вместо них есть гуи на любой вкус. Но зачем было ковыряться в клавишных комбинациях столь глубоко, что даже клавиатурные раскладки в этом поделии приходится переключать мышкой? Да, и что конкретно они улучшили (кроме слегка других гуишных финтифлюшек и ненужного встроенного текстового редактора)? Поддержка кодировок как была никакой, так и осталась никакой, остальное не критично. Да, и шрифты в пауэршелльном терминале, похоже, не настраиваются. В общем, я сам напишу такой терминал (возможно, в полтора раза лучше).

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 15:24    
Сообщение: #3
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Переосмысление терминала
Цитата: (Plan 9 доказал, что терминал и красивые шрифты — вещи совместимые, но в Linux нужно, чтобы шрифт был моноширинным...)
В принципе, единственный реальный недостаток моноширинных шрифтов — их слишком малый ассортимент и, возможно, сложность изготовления. Как ни странно, до сих пор не видел полноценного моноширинного шрифта с иероглифами (не просто со знаками одинаковой ширины, а еще и с правильными сигнатурами моноширинного шрифта — возможно, в самом формате шрифтов заложено какое-то техническое ограничение? Мои попытки сделать такой шрифт из существующего ничего не дали — то ли руки кривые, то ли их существование действительно под запретом).

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 15:56    
Сообщение: #4
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: Переосмысление терминала
(10-04-2013 15:11)Python писал(а):  Ладно, полная неработоспособность программ с псевдографическим интерфейсом — в наше время вместо них есть гуи на любой вкус.
Это чуть ли не обязательное условие улучшения терминала, ИМХО. Сохранение совместимости с псевдографикой требует сохранения моноширинного шрифта (или по крайней мере выполнения всех консольных программ в режиме совместимости с таким шрифтом), а это уже плохо. Да и bloat ненужный.

Впрочем, мне казалось, что PowerShell может выводить картинки в аутпуте — а, оказывается, нет. Я разочарован.

(10-04-2013 15:11)Python писал(а):  Но зачем было ковыряться в клавишных комбинациях столь глубоко, что даже клавиатурные раскладки в этом поделии приходится переключать мышкой?
У меня такого не было, всё работает искаропки. Видимо, у Вас какой-то баг.

(10-04-2013 15:11)Python писал(а):  Да, и что конкретно они улучшили (кроме слегка других гуишных финтифлюшек и ненужного встроенного текстового редактора)?
Краткий ответ: всё. Проблема (ну, или фича) PowerShell’а в том, что он не просто вызывает внешние программы, он содержит кучу своего специфичного синтаксиса. Конечно, в Линуксе bash тоже переопределяет кучу команд типа echo и [ (правда, он делает вид, что они совместимы с аналогичными самостоятельными программами; но дублирование кода угнетает), а в DOS и Windows это было давней (и нехорошей) традицией, но PowerShell стоит ещё дальше от shell’а и ближе к REPL’ам языков программирования типа Kaw’ы.

В PowerShell же есть Cmd-Let’ы, доступ к .NET’у и не только.

(10-04-2013 15:11)Python писал(а):  Поддержка кодировок как была никакой, так и осталась никакой, остальное не критично.
А что не так с кодировками? Cmd-Let’ы по умолчанию уникодые, для внешних программ кодировка указывается как chcp. Что не так?

Разве? «Changing the Fonts Used by the Windows PowerShell ISE»

(10-04-2013 15:11)Python писал(а):  В общем, я сам напишу такой терминал (возможно, в полтора раза лучше).
Gám{тогда} chíng{прошу} néih{Вас} sé.{написать} :angel:

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 16:01    
Сообщение: #5
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

 
(10-04-2013 15:24)Python писал(а):  В принципе, единственный реальный недостаток моноширинных шрифтов — их слишком малый ассортимент и, возможно, сложность изготовления.
Не согласен. Главный недостаток моноширинных шрифтов в том, что моноширинность — искусственное ограничение.

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

(10-04-2013 15:24)Python писал(а):  до сих пор не видел полноценного моноширинного шрифта с иероглифами
Он будет нечитаемым, следовательно никак не полноценным.

Хотя Линукс таки шрифты с иероглифами двойной ширины считает моноширинными. Но у многих программ с ними проблемы (в частности, у терминала st).

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 16:17    
Сообщение: #6
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Переосмысление терминала
Цитата:Разве? «Changing the Fonts Used by the Windows PowerShell ISE»
В меню терминала этот функционал не включили, однако. Видимо, чтобы создать повод пользователям углубиться в громоздкий «объектноориентированный» синтаксис пауэршелл.
Цитата:А что не так с кодировками? Cmd-Let’ы по умолчанию уникодые, для внешних программ кодировка указывается как chcp. Что не так?
Что изменилось? В старом терминале (при использовании векторных шрифтов) было точно так же. И переход к юникодным кодовым страницам точно так же давал странный результат (введите chcp 65001 — по-моему, пауэршелл-терминал в этом режиме ведет себя даже страньше).
Цитата:Краткий ответ: всё. Проблема (ну, или фича) PowerShell’а в том, что он не просто вызывает внешние программы, он содержит кучу своего специфичного синтаксиса. Конечно, в Линуксе bash тоже переопределяет кучу команд типа echo и [ (правда, он делает вид, что они совместимы с аналогичными самостоятельными программами; но дублирование кода угнетает), а в DOS и Windows это было давней (и нехорошей) традицией, но PowerShell стоит ещё дальше от shell’а и ближе к REPL’ам языков программирования типа Kaw’ы.

В PowerShell же есть Cmd-Let’ы, доступ к .NET’у и не только.
Давайте не будем путать терминал и интерпритатор команд (последний, кстати, можно запускать и в обычном виндовом терминале — ярлык для запуска пауэршелл без пауэршелл-терминала создается сразу при установке).
Цитата:У меня такого не было, всё работает искаропки. Видимо, у Вас какой-то баг.
Не исключено. Винт старый, возможно, что-то на нем повредилось. Наверно, нужно переустановить для проверки (или просто деинсталлировать — пользы я все равно мало вижу).

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 16:24    
Сообщение: #7
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

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

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 16:37    
Сообщение: #8
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Переосмысление терминала
Цитата:Кроме того, для некоторых систем письменности моноширинность затрудняет (иероглифы) или исключает возможность (шрифты с лигатурами, где два и более символа сливаются в один) создания нормальных шрифтов.
Да, это проблема (особенно последнее). Теоретически, если ширину лигатуры сделать кратной ширине символа, ее можно как-то вписать в моноширинный текст, но это уже будет не моноширинность с соответствием 1 символ = 1 позиция.

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 17:26    
Сообщение: #9
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: Переосмысление терминала
(10-04-2013 16:24)Python писал(а):  Вопрос касается не эстетичности или читаемости (хотя в чем сложность читать широкую латиницу?)
А, если сделать широкую латиницу, то он таки будет читаемым, но полезной информации на строку будет очень мало.

(10-04-2013 16:37)Python писал(а):  но это уже будет не моноширинность с соответствием 1 символ = 1 позиция.
На самом деле такое несоответствие порождает кучу проблем. Например, в Линуксе редактор sandy ужасно работает с китайскими текстами из-за того, что он ожидает соответствие 1 символ = 1 позиция.

Вообще, моноширинность невозможна. Моноширинность всегда была ограничена европейскими языками, ну, может и арабским, не более. В Китае моноширинности никогда не было, в Японии — только если ограничиться каной (как в «Покемонах»; полноценный текст так не напишешь).

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
10-04-2013, 17:33    
Сообщение: #10
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Переосмысление терминала
Цитата:В Китае моноширинности никогда не было
Странно. Вертикальные тексты выглядят не только моноширинными, но и моновысотными.

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)