В чем сходство между данными и программами
Разница между данными и программой
Пользователь компьютера чаще всего работает с различными данными, а также с программами. В чем их особенности?
Что такое компьютерные данные?
Под компьютерными данными понимается, строго говоря, любая последовательность сочетаний элементов машинного кода — нулей и единиц, которая может формировать собой файл, папку, массив, низкоуровневый или высокоуровневый алгоритм либо скрипт.
Но современные IT-специалисты понимают под данными чаще всего полезные, несущие информативную нагрузку сведения. Которые, как правило, представлены в виде файлов — текстовых, графических, видео- или аудиозаписей, веб-страниц. Иногда полезные данные выглядят как звуковая либо видеотрансляция — например, при просмотре телепрограмм или прослушивании радиопередач онлайн, при общении людей по Skype. Но подобная трансляция тоже может быть записана в файл.
Таким образом, компьютерные данные в современном понимании — это последовательность сочетаний элементов машинного кода — нулей и единиц, имеющая практическую полезность, несущая определенную информационную нагрузку.
Что такое программа?
Программа — это тоже последовательность сочетаний нулей и единиц в рамках машинного кода, но имеющая особую структуру и позволяющая создавать, обрабатывать, принимать и передавать другие последовательности. Например, те, что представлены как раз таки полезными данными.
Программа, таким образом, — это инструмент создания, обработки, приема и передачи файлов, трансляций и иных данных. Равно как и других программ, которые в этом случае сами по себе будут совокупностями данных.
Сравнение
Главное отличие данных от программы в том, что первые являются носителем информационной нагрузки — файлами. Программа — средство создания, а также воспроизводства этой информационной нагрузки (в том виде, в котором она нужна пользователю).
Программа, конечно же, тоже состоит из файлов — исполняемых, а также тех, что дополняют ее (библиотек, скриптов и т. д.). Но каждый из них по отдельности обычно не несет информационной нагрузки с точки зрения практической значимости для пользователя.
Одно из уникальных свойств программ — способность к самовоспроизводству. Законченное, отлаженное, укомплектованное нужными файлами и скриптами приложение всегда может само себя загружать. В свою очередь, человек в большинстве случаев не имеет возможности задействовать практически полезным способом существующие компьютерные данные без программ. Для того чтобы открыть файл или прослушать трансляцию, ему необходимо будет использовать специальное приложение, адаптированное к работе с соответствующими типами данных.
Таким образом, данные и программы — это зависимые друг от друга по многим параметрам ресурсы. Основное различие между ними сводится к их внутренней структуре, а также к режимам их практического применения.
Определив, в чем разница между данными и программой, зафиксируем основные выводы в таблице.
Как сравнить два документа Word
Данный параметр позволяет сравнить два документа и вывести на экран только несовпадающие фрагменты. Сравниваемые документы не изменяются. При таком способе сравнения различия между документами всегда отображаются в новом, третьем документе.
Если нужно сравнить исправления, сделанные несколькими рецензентами, не следует использовать данный параметр. Выберите команду Объединение исправлений от нескольких авторов в одном документе.
Откройте документы, которые нужно сравнить.
На вкладке Рецензирование в группе Сравнить нажмите кнопку Сравнить.
Выберите пункт Сравнение двух версий документа (юридическое примечание).
В поле Исходный документ укажите документ, который будет использоваться в качестве исходного.
В поле Измененный документ выберите документ, который нужно сравнить с уже открытым документом.
Щелкните Больше, а затем укажите параметры сравнения документов. Рядом с Показывать изменения выберите отображение изменений на уровне знаков или на уровне слов.
Если результаты сравнения не требуется выводить в третьем документе, укажите документ, в котором должны быть отображены изменения.
Важно: Все параметры, выбранные в разделе Больше, будут использоваться по умолчанию при последующем сравнении документов.
Если какая-либо из версий документа содержит записанные исправления, на экране отобразится соответствующее сообщение. Чтобы принять исправления и сравнить документы, нажмите кнопку Да.
Откроется новый документ, в котором будут приняты исправления, записанные в исходном документе, а изменения, отмеченные во втором из сравниваемых документов, отобразятся в виде исправлений.
Как сравнить 2 числовых последовательности на схожесть в %?
Да, надо было сначала хорошо обдумать самому, а потом уже спрашивать. Как-то спонтанно появилась мысль спросить помощи у общества, в результате имеем то, что имеем 🙂
Задача: Имеется некоторый идеальный шкальный профиль (просто последовательность чисел по разным шкалам), с которым надо сравнить результат, полученный испытуемым и получить процент сходства.
На этом имеющиеся вводные и закончились. Чтобы ограничить количество проблем, можно попробовать ограничивать результат с одной стороны, т.е. если испытуемый набрал 5, а в идеале требуется только 3, то считаем, что критерий он полностью удовлетворил и это 100%.
Получилось что-то подобное, но не оставляет ощущение, что это немного не то, что запрашивалось, т.к. решение ну совсем уж в лоб:
Остаются, правда, вопросы быстродействия, т.к. в результате испытуемого должно быть 90-100 чисел и их надо будет сравнить с приблизительно 300 другими последовательностями и выплюнуть результат. Есть подозрение, что недорогой vps подавится при выдёргивании каждой последовательности из бд, если к нему обращаться более-менее регулярно.
Есть несложная, на первый взгляд, задача: сравнить две последовательности чисел (в массивах, например, но не принципиально, можно хоть в чём) на их схожесть в %.
Сравнить надо не в лоб, сколько чисел совпадают, а насколько каждая позиция последовательности 2 отличается такой же в последовательности 1 и посчитать % сходства с учётом этого. Максимально возможное значение для каждой позиции известно заранее.
Что-то готовое подходящее можно найти или копать в сторону самостоятельного придумывания? Покурил difflib, вроде не подойдёт.
Путеводитель по программам для сравнения данных
Синхронизация данных требует от программистов, системных администраторов и времени, и соответствующих навыков. Однако не менее важен правильно подобранный инструментарий. Контроль версий, работа с проектами, резервное копирование, слияние и визуальное сравнение файлов — далеко не полный список задач, так или иначе связанных с синхронизацией.
В путеводитель вошли 10 программ, которые можно назвать во многом универсальными: они не привязаны к определенному сервису или приложению, позволяют выполнять вышеназванные (и менее специализированные) задачи не только через графический интерфейс, но и в режиме командной строки.
Критерии сравнения выглядят следующим образом:
SmartSynchronize
SmartSynchronize — кроссплатформенная программа для сравнения данных, структуры директорий и их содержимого. Фактически, программа бесплатна для некоммерческого использования, тем не менее, однопользовательская лицензия стоит 39 USD.
Режимы сравнения представлены в приветственном окне программы. Помимо диалога выбора файлов, здесь возможен просмотр истории и выбор сохраненного профиля. Также в настройках (Preferences) настраиваются фильтры: файловые — для отсеивания файлов по названию и расширению, и фильтры директорий — позволяют составить список исключений.
Для сравнения файлов используется двухпанельный режим side-by-side с синхронной прокруткой содержимого обеих панелей. Условных обозначений в SmartSynchronize немного, но, благодаря соединительным линиям (linking lines), операции сравнения и слияния очень интуитивны. SmartSynchronize указывает, куда и в каком направлении будет добавлен участок из одного файла в другой. Вставка текста производится одним кликом, позволяя обойтись без контекстного меню.
Кодировку и синтаксис документа можно определить вручную, предусмотрена подсветка синтаксиса для многих языков программирования и разметки, нумерация строк и другие редакторские функции, присущие интегрированным средам разработки IDE.
В целом, SmartSynchronize гибко настраивается, но все настройки распределены по разным разделам меню, что требует некоторого привыкания. Не хватает режимов отображения, настроек панели инструментов.
В режиме сравнения директорий выводится список файлов и статус для каждого из них, в нижней части окна доступен предосмотр. Метод сравнения — по содержимому или только по размеру и времени — определяется в настройках Edit → Preferences. Количество информационных колонок (тип файла, дата) нельзя увеличить, хотя отключить имеющиеся можно.
В SmartSynchronize реализовано как одностороннее объединение данных с левой или правой сторонами, так и обычная синхронизация. Конфигурацию можно сохранить для последующей загрузки, сделав снимок файловой структуры. Как поясняют разработчики, программа не распознает атрибуты файлов, поэтому использовать ее в качестве утилиты для резервирования нет смысла. Работа с архивами также не предусмотрена, равно как и с удаленными каталогами.
Помимо вышеупомянутых, имеется дополнительный, трехсторонний метод слияния — 3-Way-Merge, который позволяет объединить различия между несколькими версиями файлов, причем каждый из трех документов можно редактировать независимо друг от друга.
Функции сравнения, несомненно, востребованы программистами при контроле версий. Поэтому в заключение стоит сослаться на альтернативное решение этой же компании — SmartCVS. Программа представляет собой CVS-клиент с интегрированным инструментарием SmartSynchronize.
Резюме. SmartSynchronize предлагает неплохой инструментарий для работы с файлами и директориями, местами не поддающийся настройке и не выходящий за рамки базовых возможностей.
[+] Трехстороннее слияние
[+] Удобный текстовый редактор
[−] Отсутствие документации
[−] Невозможность синхронизации удаленных каталогов и архивов
WinMerge
WinMerge — программа для сравнения и объединения файлов и каталогов в ОС Windows. Ее можно использовать как отдельный инструмент либо в связке с проектами. В WinMerge встроен текстовый редактор с поддержкой языков программирования, подсветкой и нумерацией строк.
Имеется два режима работы с данными, объединенных в диалог выбора файлов и папок. При сравнении доступны фильтры двух типов: фильтры файлов и строковые. Это позволяет использовать различные надстройки и оперировать регулярными выражениями, отсеивая необходимые типы данных при сравнении.
В режиме сравнения файлов в окне отображаются оба файла, в левой и правой части. Для удобной навигации по содержимому предусмотрена карта («Местоположения»). Строки, которые имеют различия, отмечены цветом, также с ними можно ознакомиться в панели «Отличия». Основные операции слияния доступны в разделе «Объединение».
Отдельного внимания заслуживает функциональность текстового редактора. Внешний вид поддается модификации. Помимо подсветки синтаксиса и нумерации строк, предусмотрена работа со скриптами, а расширение функциональности возможно за счет дополнений. Дополнения относятся к распаковщику, представлению и редактору скриптов.
При сравнении каталогов результаты выводятся табулированным списком. В нем содержатся сведения о названии файла (каталога), его расположении, результат сравнения, дата, расширение и другая информация. Настроить отображение можно с помощью колонок. При необходимости можно активировать рекурсивный режим или переключиться в представление в виде дерева для удобной навигации.
WinMerge позволяет выполнять одни и те же задачи разными способами — в том числе, с помощью перетаскивания или через контекстное меню Проводника. Можно создавать проекты для быстрого доступа к данным и настройкам. WinMerge работает в режиме командной строки, также программу можно использовать в связке с системами контроля версий (TortoiseSVN, Visual Studio, Rational ClearCase и т. п.).
Резюме. WinMerge — программа, в первую очередь, с уклоном на работу с проектами. Интеграция с SVN, функциональный редактор, фильтры и расширения — все это отлично дополняет базовые возможности при сравнении данных.
[+] Поддержка расширений
[+] Функциональный редактор
[+] Интеграция со сторонними приложениями
[−] Нет трехстороннего сравнения
Meld — кроссплатформенная программа (OS X, Linux, Windows) для синхронизации файлов и директорий. С ее помощью осуществляется как двух-, так и трехстороннее сравнение. Прежде всего, инструментарий Meld будет полезен разработчикам, так как возможна интеграция с системами управления версиями: Git, Bazaar, Mercurial, Subversion и прочими.
Несмотря на поддержку нескольких платформ, приложение далеко не стабильно функционирует в Windows. Скажем, вкладки и окна не всегда открываются и закрываются корректно. Возможно, проблемы связаны с библиотекой PyGTK, входящей в инсталлятор. Запустить программу получилось не сразу и только от имени администратора. Ошибки возникают постоянно, в подтверждение — перечень текущих проблем.
В процессе сравнения файлов можно задействовать текстовый фильтр или поиск (поддерживается синтаксис regex). Предусмотрены подсветка синтаксиса (используется библиотека gtksourceview), нумерация строк, учет пробелов и другие опции, которые нужно активировать через настройки, так как по умолчанию они отключены. Вставки, изменения и конфликты в документе подсвечиваются, возможна быстрая навигация по списку изменений и экспорт в формате diff. Связь между файлами легко отследить с помощью соединительных линий и одним кликом произвести слияние нужных участков.
Сканирование файлов директорий работает очень медленно. Это связано с тем, что сравнение осуществляется по содержимому, а не по размеру и временно́й отметке. Проблема решается установкой флажка напротив соответствующей опции в настройках. Набор доступных колонок весьма ограничен: размер, дата модификации и разрешения. Хотя и можно воспользоваться файловым фильтром, просмотр длинного списка файлов все равно превращается в рутинный процесс: нельзя мгновенно остановить сканирование, свернуть дерево файлов, быстро переместиться к нужным элементам.
Разработчикам будет интересен третий режим работы приложения — Version Control View. Meld поддерживает интерфейс командной строки, поэтому предусмотрена интеграция со средами Git, Bazaar, Mercurial, Subversion и многим другими.
Резюме. Программа Meld зарекомендовала себя с хорошей стороны в среде Linux, чего нельзя сказать о функционировании в Windows. Нестабильная работа и неудобный интерфейс, отсутствие сессий, недостаточная гибкость настройки. С другой стороны, инструментарий программы неплох, а качественная адаптация Meld для Windows, возможно, лишь вопрос времени.
[+] Трехстороннее сравнение
[+] Поддержка систем контроля версий
[−] Медленная и нестабильная работа в Windows
[−] Неудобный и неинформативный интерфейс
Diffuse
Diffuse —кроссплатформенный продукт для ОС Windows, OS X, Linux и BSD, по интерфейсу напоминающий Meld (в основе — библиотека PyGTK), но имеющий функциональные отличия. Заявлена интеграция с Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion и другими средами.
Продолжая сравнение с Meld: Diffuse характеризуется стабильностью, здесь нет внезапных зависаний. Доступна подробная документация, интерфейс переведен на русский язык. Однако сравнение директорий не входит в инструментарий, в программу заложены только функции сравнения файлов и их редактирования. В Diffuse можно обнаружить несколько режимов слияния: — двух-, трех- и многостороннее. Таким образом, источников сравнения может быть сколько угодно, вопрос лишь в быстродействии и удобстве. Касательно второго аспекта можно лишь сказать, что сессий здесь нет — соответственно, работа с большими проектами в Diffuse под вопросом.
Различия отмечаются цветом, сводка (Comparison Summary) доступна возле полосы прокрутки, для навигации по списку изменений предназначены кнопки на панели управления. Нумерация строк и подсветка синтаксиса с возможностью ручного переключения включены по умолчанию. В отличие от других подобных редакторов, в Diffuse нельзя сразу выделить произвольный участок текста, для этого необходимо дважды кликнуть по содержимому. В ином случае можно выделять текст и производить другие действия только построчно.
Очевидно, что в Diffuse перелинковки различий между файлами нет, поэтому слияние строк осуществляется менее интуитивным методом. Все доступные команды собраны в разделе «Слияние», куда нужно обращаться каждый раз за неимением команд в контекстном меню. В SmartSynchronize или других упомянутых решениях многие операции производятся в один клик.
Работа с системами управления версиями возможна посредством командной строки, перечень команд с описанием изложен в справке.
Резюме. Функциональность такого рода востребована при слиянии нескольких текстовых документов. Программа лишена недостатков, присущих ближайшему аналогу Diffuse — Meld. Но, к сожалению, сравнение директорий и отчетность остались за бортом.
[+] Удобная работа со строками
[+] Интеграция с CVS
[+] Многооконное слияние
[−] Отсутствие сессий
[−] Маркировка изменений не интуитивна
Perforce P4 Merge
P4Merge нечасто упоминается среди других бесплатных продуктов (например, по сравнению с WinMerge). К тому же отыскать эту программу среди других компонентов комплекса Perforce непросто. Perforce — это коммерческая кроссплатформенная система управления версиями, обладающая широкой сферой применения, не в последнюю очередь за счет плагинов и интеграции с различными продуктами (IntelliJ IDEA, Autodesk 3D Studio Max, Maya, Adobe Photoshop, Microsoft Office, Eclipse, emacs и др.). Впрочем, P4 Merge может работать автономно от сервера Perforce, достаточно скачать программу с сайта разработчика для ее бесплатного использования.
Основные операции — это сравнение файлов (Diff) и слияние (Merge). Редактор документов предельно прост: есть нумерация, но нет подсветки синтаксиса. Редактировать файлы в двух панелях «на лету» нельзя, нужно выбрать одну из панелей, включить режим редактирования и затем сохранить изменения. Различия маркируются, для перехода между ними предназначены кнопки навигации. Ориентироваться по изменениям проще всего с помощью соединительных линий. В целом, интерфейс P4 Merge недостаточно удобен: в нем нет сводки по различиям, статистика по изменениям представлена суммарной цифрой, без детализации, для просмотра изменений нужно использовать ручное обновление.
Перечисляя другие особенности программы, стоит упомянуть сравнение изображений. В данном режиме обнаружились две полезные функции: подсветка различий и слияние двух файлов в один. При этом непонятно, почему меню редактора содержит невостребованные команды, такие как смена кодировки, методы сравнения и прочие, которые относятся к сравнению текстовых файлов, но никак не изображений.
Резюме. Конечно, в P4 Merge множество функциональных ограничений, особенно если сравнивать с платными продуктами. Приложение можно рассматривать сугубо как дополнение к серверу Perforce. Возможно, в поисках нужного инструментария следует обратить внимание и на другие компоненты, доступные на сайте разработчика.
[+] Диаграмма слияния в режиме Merge
[−] Слабая функциональность
[−] Невозможность редактирования на лету
[−] Отсутствие команд слияния