ed
Оригинал: Упражнение 48: ed
Переводчик: Феликс Ли
Лицензия: CC BY-NC-SA 4.0
Гордо использует Google Translate
Если ваш процесс работает правильно, вы должны были бы сосредоточиться на более длинных проектах, несколько недель за раз. В этом проекте вашей целью является создание максимально точной копии команды ed
. Цель этого упражнения — не быть творческим, а систематически реализовать точную копию поведения другого программного обеспечения. Посмотрите на это как на упражнение по подделке. Вы сделаете что-то очень хорошее, что можно использовать вместо настоящего ed
, и никто не узнает.
Эта работа заключается в создании "мастерской копии" команды ed
, максимально точно воспроизводящей её поведение, то есть ваши тестовые наборы должны запускать один и тот же скрипт для настоящего ed
и вашего варианта, чтобы сравнить выходные данные. Это похоже на "мастерскую копию", которую вы делали при обучении алгоритмам, но с тем отличием, что вы копируете поведение существующего программного обеспечения, а не пытаетесь его запомнить. Процесс аналогичен, но вы можете использовать тестовые наборы для ускорения работы.
ed
— одна из самых ранних версий Unix-текстового редактора, честно говоря, она очень плоха. На самом деле, мне трудно представить, кто может использовать ed
для редактирования текста, так как это одно из самых нелюбимых программных средств среди пользователей. Если вам сложно это представить, попробуйте сделать копию ed
и вы поймёте, почему.Некоторые концепции ed
состоят в том, что хотя он поддерживает скрипты, он был первоначально использован в интерактивном режиме. Как будто это текстовый MUD. Вы запускаете ed
, который начинается в командном режиме, позволяющем использовать команды для изменения текста. Когда вы выполняете команду, требующую ввода данных, он переходит в режим ввода до завершения этой команды. Также вам нужно знать адрес строки для её редактирования. Это кажется мукой, но по сравнению с другими текстовыми редакторами, это волшебство единорога.
Чтобы закончить вашу копию ed
, вам придётся сильно полагаться на библиотеку Python re
, чтобы использовать регулярные выражения. Мы уже использовали эту библиотеку в упражнении 31, поэтому обычно вы должны быть знакомы с ней и регулярными выражениями.Я также рекомендую вам потратить 45 минут на использование ed
и написание некоторого кода для вашего проекта ed
. Эта боль научит вас, как им воспроизводить поведение. Кроме того, вам потребуется прочитать страницу руководства man ed
, чтобы получить базовое понимание команд, а также просмотреть учебные видео по использованию программы. Отличным началом будет поиск различных примеров скриптов в интернете и попробовать использовать их как ваши первые тестовые случаи.> Примечание
Я дам вам подсказку: вам потребуется использовать конечный автомат (FSM) для обработки модального характера команд
ed
.
ed
, даже если вы не знакомы с языком C, взгляните на него.ed
в модуль, который можно использовать в других проектах. Вам потребуется использовать его в будущих упражнениях.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )