Nano Hash - криптовалюты, майнинг, программирование

Как я могу кодировать интерфейс командной строки?

Я разработчик графического интерфейса. Я использовал многие фреймворки с графическим интерфейсом, включая WindowsForms, Flash, HTML, AppKit, UIKit. Я могу сказать, что знаю, как кодировать GUI.

Внезапно я заинтересовался интерфейсом командной строки. Например, VI или Emacs. Поскольку я начал программировать с графическим интерфейсом, у меня нет опыта или знаний о CLI. Конечно, я использовал VI и unix-оболочки, однако я не знаю, как их реализовать. И я хочу это знать.

Для графических интерфейсов самая основная конструкция для всего графического материала - это метод рисования самого низкого уровня. Для программных реализаций это метод рисования на основе процессора. Для реализации с аппаратным ускорением это метод на основе OpenGL. Все материалы GUI построены поверх них. Что я могу ожидать от CLI? Как я могу рисовать текст на консоли и моргать кареткой?

Мне просто нужен первый шаг. Например, имя функции или имя библиотеки. Например, что-то вроде функции setPixel(). Любая помощь будет оценена.

P.S. Я предпочитаю общую систему Unix. В первую очередь POSIX. И в настоящее время я использую Mac OS X. Конечно, язык C.


  • В конце концов, все сводится к отправке и получению escape-последовательностей терминала, таких как Эскейп-коды VT-100. Тем не менее, это болезненно делать вручную, и существует так много [слегка] разных терминалов / возможностей терминала! Библиотеки настоятельно рекомендуется :) 07.09.2011
  • Я не буду менять вопрос для вас, потому что у вас есть представитель › 4800, но вы должны добавить теги [Posix] и [C] 07.09.2011
  • @pst Хорошо. Если они не совместимы много, я не пойду туда. Может быть. 07.09.2011
  • Просто чтобы вы знали (и этого не было в вашем вопросе), Windows изначально не поддерживает escape-коды ANSI в консоли. 07.09.2011
  • @Eonil Скажем так ... UNIX использует базу данных termcap для работы с ней. :) 07.09.2011

Ответы:


1

Если вы хотите нырнуть с головой, изучите ncurses и печатайте дальше. Это НАСТОЯЩИЙ способ написания консольных gfx-приложений.

Если вы хотите изучить основы, экранированные коды ANSI. Это механика того, как ncurses взаимодействует с терминалом, делая свою магию. Это вполне управляемо само по себе и интересно для изучения — вы просто печатаете escape-последовательность, и курсор перемещается в определенную точку на экране, или все, что вы распечатываете, печатается в обратном видео и так далее. И оттуда это грубая полуграфика, использующая верхнюю половину 256 кодов ASCII и так далее.

07.09.2011

2

Загляните на http://en.wikipedia.org/wiki/Readline, потому что там вы найдете такие вещи, как история командной строки, завершение вкладок и т. д.

Также ncurse http://en.wikipedia.org/wiki/Ncurses для экранов диалогов на основе консоли.

07.09.2011
  • Спасибо за ответ. Выглядит чуть более высоким уровнем, чем я ожидал, в любом случае посмотрю. :) 07.09.2011

  • 3

    На каком языке вы экспериментируете? Для какой ОС? ncurses, как уже говорилось, является хорошей библиотекой для unix-подобных систем, но если вы работаете под MS Windows, я думаю, все будет немного иначе.

    Еще одна вещь, о которой следует помнить, это то, что в зависимости от вашей ОС вам, возможно, придется изучить и понять записи termcap или унаследованное наследие DOS.

    Для * nix вам нужно проверить некоторую графическую библиотеку, если вы хотите поэкспериментировать с пикселями и т.п. Если вам нужен обычный терминальный интерфейс, ncurses ЯВЛЯЕТСЯ отправной точкой (пока вы не захотите делать все вручную с помощью termcap и экранирования).

    Существует множество фреймворков для разработки пользовательского интерфейса на основе текста/терминала, более или менее они дают все, что вам нужно. Но если вы хотите проследить линию от пикселя (1,1) до пикселя (10, 24), я думаю, вам следует сосредоточиться на графических библиотеках. (OpenGL в *nix env легко получить через библиотеку MESA).

    На win32, ну, DirectX, но с ними реально хлопотно.

    07.09.2011
  • О, спасибо за заботу. Я пропустил это. Я обновил свой вопрос, чтобы представить свою целевую платформу. 07.09.2011
  • ну, если дело доходит до графики, все немного облажается. Например, в старые добрые дни MS-DOS (или HP-UX тоже) вам приходилось полагаться на графическую подсистему (настройка графического режима в DOS, полагаясь на X на *nix). Насколько я помню, самым простым графическим инструментарием был The Turtle — да, старый добрый Паскаль :) Отредактировано с большим пониманием графики. 07.09.2011

  • 4

    C имеет библиотеку для более удобного управления терминалом: ncurses

    07.09.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

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