1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lmpythw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex48.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 03:52 f9ec0dd

Упражнение 48: 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.

Исследовательское обучение

  • Найдите исходный код GNU ed, даже если вы не знакомы с языком C, взгляните на него.
  • Преобразуйте вашу реализацию ed в модуль, который можно использовать в других проектах. Вам потребуется использовать его в будущих упражнениях.
  • Больше никогда не создавайте подобное программное обеспечение, за исключением случая, когда вам станет скучно.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lmpythw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lmpythw-zh.git
oschina-mirror
wizardforcel-lmpythw-zh
wizardforcel-lmpythw-zh
master